2014-01-21 3 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

Вы не можете использовать 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. Но тогда мне нужно знать больше, чтобы показать вам пример.

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"

Смежные вопросы