是否可以在编辑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;
}
这个ALMOST工作,但是复选框一直显示所有字段,我认为因为RowDataBound再次被称为AFE RowEditing所以它再次呈现整个事物:(
有什么建议吗?
谢谢, EtonB。
答案 0 :(得分: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));
}
}
答案 1 :(得分:0)
您需要处理隐藏RowDataBound事件中的复选框。
您需要确定最后一行是什么,并在该条件为真时将checkboxes visible属性设置为true。显然。
答案 2 :(得分:-1)
我想这更像是一个黑客而非优雅的解决方案,但如果条件为真,我可能会通过JavaScript隐藏其他复选框。