我有一个gridview,其中每列有两个模板字段。一个是ItemTemplate,另一个是EditItemTemplate。现在在EditItemTemplate中它将显示一些文本框,我可以在其中执行必要的编辑。我可以使用以下代码轻松地从每个单元格中获取数据 -
Dim gvRow As GridViewRow = gvView.Rows(e.RowIndex)
CType(gvRow.FindControl("controlID"), TextBox).Text
但是当网格视图不处于ItemTemplate中的编辑模式时,如何获取数据。我尝试了以下内容 -
Dim rowView As DataRowView = CType(gvRow.DataItem, DataRowView)
Dim something As String = rowView("data_field").ToString()
但是它获取异常对象引用并未设置为object的实例。这可能正在发生,因为在实例化行时,应该在RowDataBound之类的方法中使用上述代码。但我必须从其他方法中获取数据。不知道怎么做。
再次澄清我想在gridview列处于ItemTemplate模式时获取数据。
答案 0 :(得分:1)
我想你想在某些命令中读取网格视图列的值。如果您的gvRow
是gridview的行,那么您可以使用.Cell(index).Text
来获取列的值。
如果您正在使用模板字段并使用某些控件来显示列数据,则必须执行gvRow.findControl("controlId")
,然后将其强制转换为适当的控件对象以从中读取数据。
快乐编码
答案 1 :(得分:1)
您可以考虑直接访问gridview数据源。如果您允许在网格上进行排序/分页,则在执行此操作时要小心,因为数据源的索引会有所不同。
答案 2 :(得分:-1)
两个答案很好,非常感谢你。
我花了更多时间尝试获取GridView Cell值,但没用,我无法知道问题是什么。当我读到你的答案时,我发现我的GridView有模板字段,所以这就是问题。