单击事件时更改GridView自定义按钮文本和CSS

时间:2018-09-26 20:19:02

标签: css asp.net button gridview webforms

我正在一个项目中,我正在为Admin创建仪表板。 我有一个 UsersGridView ,其中显示了已注册用户的数据。 在 Gridview 中使用 Template 字段创建了一个按钮,该按钮允许 Admin 进行锁定或< strong>启用用户使用系统。

<asp:TemplateField HeaderText="LockoutStatus">
    <ItemTemplate>
         <asp:Button ID="LockoutStatus" runat="server" CausesValidation="false" CommandName="LockoutStatus" Text="Enabled"
            CommandArgument='<%# Eval("Id") %>' />
   </ItemTemplate>
</asp:TemplateField>

RowCommand 事件中,如果用户被系统锁定,如何更改按钮CssClass和文本。

1 个答案:

答案 0 :(得分:1)

可以通过多种方式更改CssClass。

具有RowDataBound事件。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //check if the row is d datarow
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //cast the row back to a datarowview
        DataRowView row = e.Row.DataItem as DataRowView;

        //use findcontrol to locate the butotn
        Button btn = e.Row.FindControl("LockoutStatus") as Button;

        //change the class based on a column value
        if (row["ColumnName"].ToString() == "LockedOut")
        {
            btn.CssClass = "ClassA";
        }
    }
}

或在带有三元运算符的aspx页面上。

<asp:Button ID="LockoutStatus" runat="server" 
    CssClass='<%# Eval("ColumnName").ToString() == "LockedOut" ? "ClassA" : "ClassB" %>'

或者根据需要在RowCommand事件中。您可以使用CommandSource并将其强制转换为Button。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    Button btn = e.CommandSource as Button;
    btn.CssClass = "ClassA";
}