我正在将 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
}
具体来说,我得到的错误是,无法将使用 [] 的索引应用于“对象”类型的表达式,我非常肯定这是指 DataItem["Status"] 部分。
如何从选定行中获取由名称指定的列的值?
更新:我找到了一个解决方案,在下面的答案中,但它可能会做得更好。如果出现更好的答案,我会很乐意接受不同的答案。
请您参考如下方法:
我找到了一个有效的解决方案 here ,但感觉有点迂回。
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
}
