如何从ASP.NET 2中的ItemTemplate中的gridview获取数据

时间:2011-11-01 09:18:48

标签: asp.net vb.net gridview itemtemplate

我有一个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模式时获取数据。

3 个答案:

答案 0 :(得分:1)

我想你想在某些命令中读取网格视图列的值。如果您的gvRow是gridview的行,那么您可以使用.Cell(index).Text来获取列的值。

如果您正在使用模板字段并使用某些控件来显示列数据,则必须执行gvRow.findControl("controlId"),然后将其强制转换为适当的控件对象以从中读取数据。

快乐编码

答案 1 :(得分:1)

您可以考虑直接访问gridview数据源。如果您允许在网格上进行排序/分页,则在执行此操作时要小心,因为数据源的索引会有所不同。

答案 2 :(得分:-1)

两个答案很好,非常感谢你。

我花了更多时间尝试获取GridView Cell值,但没用,我无法知道问题是什么。当我读到你的答案时,我发现我的GridView有模板字段,所以这就是问题。