簡體   English   中英

Infragistics WebDataGrid通過列名稱從選定的行獲取值:VB.net到C#的轉換

[英]Infragistics WebDataGrid get value from a selected row by column name: VB.net to C# conversion

我正在將VB.NET中具有代碼隱藏的網站轉換為C#。 我遇到的唯一真正的問題是,通過RowSelectionChanged事件中的列名稱從Infragistics WebDataGrid行中獲取數據。

VB.NET示例代碼:

If Me.WebDataGrid1.Behaviors.Selection.SelectedRows(0).DataItem("Status").ToString <> "Released" Then
        '"Status" is the column name
End If

我認為將其更改為此幾乎可以做到,但無濟於事。

if (this.WebDataGrid1.Behaviors.Selection.SelectedRows[0].DataItem["Status"].ToString() != "Released") { 
        //do stuff
}

具體來說,我得到的錯誤是, Cannot apply indexing with [] to an expression of type 'object'我很肯定地說這是指DataItem["Status"]部分。

如何從名稱指定的列的選定行中獲取值?

更新:我找到了一個解決方案,在下面的答案中,但可能可以做得更好。 如果有更好的答案,我將很樂意接受其他答案。

我在這里找到了一個可行的解決方案,但感覺有些round回。

GridRecord selectedRow = e.CurrentSelectedRows[0];
DataRowView dataItem = (DataRowView)selectedRow.DataItem;
DataRow dataRow = dataItem.Row;
object[] valueArray = dataRow.ItemArray;
int columnIndex = WebDataGrid1.Columns["Status"].Index;
string statusValue = selectedRow.Items[columnIndex].Value.ToString();

if (statusValue != "Released") {
    //do stuff
}

C#行中缺少的所有內容都將this.WebDataGrid1.Behaviors.Selection.SelectedRows [0] .DataItem強制轉換為DataRowView。 例如,以下將起作用:

if (((DataRowView)this.WebDataGrid1.Behaviors.Selection.SelectedRows[0].DataItem)["Status"].ToString() != "Released")
{
        //do stuff
}

請注意,以下內容可能更易於閱讀:

DataRowView drv = (DataRowView) this.WebDataGrid1.Behaviors.Selection.SelectedRows[0].DataItem;
if (drv["Status"].ToString() != "Released")
{
    //do stuff
}

我假設您要轉換的VB代碼工作正常,因為未設置Option Strict,因此不需要顯式完成Object和DataRowView之間的轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM