![](/img/trans.png)
[英]infragistics webdatagrid get selected cell from keydown event in client side
[英]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.