我有一个带有文本框和两个LinkButton Up和Down的gridview,我想将LinkButton上下调为Disable,条件是,必须禁用第一行的Linkbutton Up,并且必须禁用Linkbutton Down。最后一行。
我想在onRowDataBound上做..但我无法做..
foreach (GridViewRow row in GridView1.Rows)
{
// some code?
}
请有人告诉我如何做到这一点..用一些测试exp。
答案 0 :(得分:2)
我不会在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方法或直接索引控件。
答案 1 :(得分:0)
您需要在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)
{
}
答案 2 :(得分:0)
当您像这样绑定网格时,您执行相同的任务。假设您的链接位于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;
}