在单击事件上更改 GridView 自定义按钮文本和 Css

Change GridView Custom Button Text and Css on click event

我正在做一个项目,我正在为管理员创建一个仪表板。 我有一个 UsersGridView,其中显示了注册用户的数据。 使用 GridviewTemplate 字段,我创建了一个按钮,允许 A​​dmin 使用 锁定启用用户使用系统。

<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 和文本。

您可以通过多种方式更改 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";
}