从BoundField DataField访问数据

时间:2014-01-21 16:16:06

标签: asp.net vb.net gridview

如何从<asp:BoundField DataField="DateStart"访问数据。 我有一个IF语句,我希望查看的数据是>还是<,而不是DataField中的数据。

我曾经使用rows(0).findControl,但那不再适用了。

If today > item.FindControl("btnSelect") And today < item.FindControl("btnSelect") Then

如果可能的话

2 个答案:

答案 0 :(得分:1)

您不能FindControl使用BoundField,只能使用TemplateFields。您需要使用单元格的Text property

Dim text = grid.Rows(index).Cells(index).Text ' the cell-index is the column-index '

您需要将其解析为DateTime / Date

Dim dateStart = Date.Parse(text)
If Date.Today > dateStart.Date  ...

但如果您使用RowDataBound,则可以访问原始DataItem。但后来我需要了解更多信息,向您展示一个例子。

答案 1 :(得分:0)

在GridView的定义中,添加

<asp:GridView .... DataKeyNames="ItemID" ...>

您还需要使用OnRowDataBound,而不是OnDataBound

<asp:GridView .... DataKeyNames="ItemID" ... OnRowDataBound="GridView_RowDataBound">

然后在你的代码背后,像这样

protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
     if(e.Row.RowType == DataControlRowType.DataRow)
     {
          int ItemId = Int32.Parse(YourGridView.DataKeys[e.Row.RowIndex].Values[0].ToString());
     }
}

如果要查找多个值,请将 DataKeyNames 设置为

DataKeyNames="ID,Name,COde,Value and so on"