如何基于GridView的第一行和最后一行禁用和启用ItemTemplate链接按钮
本文关键字:一行 启用 ItemTemplate 链接 按钮 最后 GridView 何基于 | 更新日期: 2023-09-27 18:20:15
我有一个带有文本框和两个LinkButton Up和Down的网格视图,我想将LinkButton Up and Down设置为Disable,条件是第一行必须禁用LinkButton Up,最后一行必须禁用LinkButton Down。
我正在onRowDataBound中尝试。。但是我做不到。
foreach (GridViewRow row in GridView1.Rows)
{
// some code?
}
请有人告诉我怎么做。。有一些测试经验。
我不会在OnRowDataBound事件中这样做,我会在绑定GridView后禁用控件:
// Bind
gv.DataSource = datasource;
gv.DataBind();
// Disable Up/Down LinkButtons
if (gv.Rows.Count > 0)
{
// With FindControl() if you know the IDs:
((LinkButton)gv.Rows[0].Cells[0].FindControl("lb_up").Enabled = false; // Disable up LinkButton
((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].FindControl("lb_down").Enabled = false; // Disable down LinkButton
// -- OR --
// Directly index the controls, assuming Up is at 0, and Down is at 1:
((LinkButton)gv.Rows[0].Cells[0].Controls[0]).Enabled = false; // Disable up LinkButton
((LinkButton)gv.Rows[gv.Rows.Count - 1].Cells[0].Controls[1]).Enabled = false; // Disable down LinkButton
}
您可以使用FindControl方法,也可以直接对控件进行索引。
您需要比较RowDataBound事件中的RowType
。类似这样的东西:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
GridViewRow row = e.Row;
if (row.RowType == DataControlRowType.DataRow)
{
.....
}
}
您可以在HeaderTemplate和FooterTemplate中分别添加Down
和Up
按钮。
if (row.RowType == DataControlRowType.Header)
{
}
if (row.RowType == DataControlRowType.Footer)
{
}
当您像这样绑定网格时,您会执行相同的任务。假设您的链接位于asp:TemplateField
中。
if (GridView1.PageIndex == 0)
{
GridView1.Rows[0].FindControl("lnkUp").Visible = false;
}
if (GridView1.PageIndex == (GridView1.PageCount - 1))
{
GridView1.Rows[GridView1.Rows.Count - 1].FindControl("lnkDown").Visible = false;
}