2010-10-26 3 views
2

Возможно ли иметь флажок, который появляется только при редактировании последней строки GridView?Видимый флажок только в последней строке Gridview?

Я пытался что-то подобное в EditItemTemplate:

<asp:CheckBox ID="chkNextDay" runat="server" 
       ToolTip="Is it a next-day departure?" 
       Enabled="true" 
       Checked='<%# DateTime.Parse(Eval("OutHour","{0:d}")).Date > 
          DateTime.Parse(Eval("InHour","{0:d}")).Date %>'/> 

Тогда на код-за я пытался скрыть это за исключением последнего, как это строки:

protected void grvOutHour_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
      GridView grvOutHour = (GridView)this.grvReport.Rows[grvReport.EditIndex].FindControl("grvOutHour"); 
      TextBox txtBox = (TextBox)grvOutHour.Rows[e.NewEditIndex].FindControl("txtEditOutHour"); 
      CheckBox nextDay = (CheckBox)grvOutHour.Rows[e.NewEditIndex].FindControl("chkNextDay"); 
      if (grvOutHour.Rows.Count-1 != e.NewEditIndex) 
       nextDay.Visible = false; 
     } 

Этот ПОЧТИ работал , но флажок показывался для всех полей, я думаю, потому что RowDataBound снова называется AFTER RowEditing, поэтому он снова делает все это :(

Любые предложения?

Спасибо, EtonB.

ответ

3

Использование RowDataBound вместо ...

protected void grvOutHour_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowState == DataControlRowState.Edit) 
    { 
     GridView grid = (GridView)sender; 
     CheckBox nextDay = (CheckBox)e.Row.FindControl("chkNextDay"); 
     nextDay.Visible = (e.Row.RowIndex == (grid.Rows.Count - 1)); 
    } 
} 
+0

Имеет смысл для меня, однако nextDay подходит как null. Я предполагаю, что он не может найти элемент управления, потому что его внутри EditItemTemplate или что-то еще? –

+0

@ Eton Попробуйте последнее изменение, изменилось, чтобы проверить, что RowState находится в режиме редактирования. –

+0

Спасибо, теперь у меня есть странная проблема. Grid.Rows.Count изменяется в зависимости от того, какую строку я редактирую? Кроме того, у меня есть 3 строки, но при редактировании середины он не вводит этот метод, как будто он никогда не переходит в состояние редактирования. –

-1

Я думаю, что это скорее хак, чем элегантное решение, но я бы, вероятно, просто спрятал другие флажки через JavaScript, если это условие истинно.

0

Вам нужно будет обрабатывать скрытие флажок в случае RowDataBound.

Вам необходимо определить, что такое последняя строка, и установить видимое свойство checkbox на true, если это условие истинно.

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