【问题标题】:Disable/ Hide a control inside a specific row of GridView在 GridView 的特定行中禁用/隐藏控件
【发布时间】:2014-06-27 21:53:10
【问题描述】:

我有下面的代码在 asp.net 中创建一个 gridview,在 gridview 里面我有一个删除按钮。下面的代码工作正常,并在所有行中显示删除。 我想在第一行隐藏/禁用删除按钮。有人可以建议代码部分吗?

<asp:gridview ID="Gridview1" runat="server" 
  ShowFooter="true" AutoGenerateColumns="false">
     <Columns>
            <asp:BoundField DataField="RowNumber" HeaderText="Row Number" />
                <asp:TemplateField HeaderText="Cat">
                <ItemTemplate>
                    <asp:TextBox ID="TextBoxCat" runat="server" Enabled="false"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
              <asp:TemplateField HeaderText="Delete" >
                            <ItemTemplate>
                                <asp:LinkButton ID="DeleteItemsGridRowButton" runat="server">Delete</asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
            </Columns>
        </asp:gridview>

【问题讨论】:

  • 使用 RowDataBound 事件隐藏第一行

标签: c# asp.net gridview


【解决方案1】:

您可以使用GridView.RowDataBound Event 事件。

然后使用FindControl方法找到LinkBut​​ton

public class Animal
{
    public int RowNumber { get; set; }
    public string Name { get; set; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Gridview1.DataSource = new List<Animal>
        {
            new Animal {RowNumber = 1, Name = "One"},
            new Animal {RowNumber = 2, Name = "Two"},
            new Animal {RowNumber = 3, Name = "Three"},
            new Animal {RowNumber = 4, Name = "Four"},
        };
        Gridview1.DataBind();
    }
}

private int _counter;

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (_counter == 0)
        {
            var linkButton = e.Row.FindControl("DeleteItemsGridRowButton") 
                as LinkButton;
            linkButton.Visible = false;
            _counter++;
        }
    }

}

【讨论】:

    【解决方案2】:

    试试这个:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       if(GridView1.Rows.Count>0)
       {
        //GridView1.Rows[0].Visible = false;
           LinkButton DeleteItemsGridRowButton=   (LinkButton) GridView1.Rows[0].FindControl("DeleteItemsGridRowButton");
           if(DeleteItemsGridRowButton!=null)
           {
            DeleteItemsGridRowButton.Visible=false
           }
       }
    }
    

    【讨论】:

    • 您是否设置了正确的事件?它应该是 RowDataBound 事件。
    • 我想隐藏/禁用第一行的删除按钮
    • @SivakumarPiratheeban,请检查更新的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2015-06-16
    • 2010-11-04
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多