2014-01-21 87 views
0

我將如何從<asp:BoundField DataField="DateStart"訪問數據。 我有一個IF聲明,我想看看是否數據是><DataField中的數據。從BoundField DataField訪問數據

我曾經使用rows(0).findControl,但不會工作了。

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

如果可能

+0

您的比較是沒有意義的,不是嗎?在你的問題中,你提到你想檢查_「如果數據是>或<」_。然後我會檢查它是否是<>。如果你想得到相反的結果,正如你的代碼使用'And'所暗示的那樣,那麼它就不那麼有用了,因爲它從來都不是真的。一個日期不可能比現在更早和更晚。注意:一般情況下,你應該使用'AndAlso'和'OrElse',而不是'And'和'Or'。 –

回答

1

不能在BoundField的使用FindControl,只能用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。但是,我需要了解更多才能向你展示一個例子。

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"