C# 带有启用和禁用图像按钮的Gridview

C# 带有启用和禁用图像按钮的Gridview,c#,gridview,asp.net-ajax,C#,Gridview,Asp.net Ajax,我在asp.net应用程序中使用了gridview。我想插入一列图像按钮,点击它将启用或禁用用户或更改数据库中的状态字段,并相应地更改图像按钮图像用户状态 意思:我想为禁用和启用的用户显示不同的图像 如何在C#中执行此操作并将数据绑定到图像按钮 任何人都请帮忙。提前谢谢 使用ItemDataBound事件。在这里,您可以检查网格的每一行并对其应用更改。然后可以隐藏/取消隐藏或更改按钮: VB.net,但您可以轻松地转换为C#: 示例用户模型: public class UserModel {

我在asp.net应用程序中使用了gridview。我想插入一列图像按钮,点击它将启用或禁用用户或更改数据库中的状态字段,并相应地更改图像按钮图像用户状态

意思:我想为禁用和启用的用户显示不同的图像

如何在C#中执行此操作并将数据绑定到图像按钮


任何人都请帮忙。提前谢谢

使用ItemDataBound事件。在这里,您可以检查网格的每一行并对其应用更改。然后可以隐藏/取消隐藏或更改按钮:

VB.net,但您可以轻松地转换为C#:

示例用户模型:

public class UserModel {    
        public string Name { get; set; }
        public bool IsEnabled { get; set; }
}
以下是GridView代码:

<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false" 
    onrowcommand="GridView_RowCommand" onrowdatabound="GridView_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemStyle HorizontalAlign="Center" />
            <ItemTemplate>
                <asp:ImageButton ID="EnabledImgBtn" runat="server" 
                    CommandArgument='<%# Eval("Name") %>'
                    CommandName="ResetUserState" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Name" HeaderText="Name" />
         //Other columns....
    </Columns>
</asp:GridView>

你可以考虑使用“CudidField'”,它的类型等于“图像”,而不是“TeMePieldField'”,但是这种方法存在问题。 希望这有帮助

<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false" 
    onrowcommand="GridView_RowCommand" onrowdatabound="GridView_RowDataBound">

    <Columns>
         <asp:TemplateField HeaderText="Change Status" ItemStyle-CssClass="GrdItemImg">
                            <ItemTemplate>
                                <asp:ImageButton ID="ibtnChangeActiveStatus" CommandArgument='<%#Eval("RecordID")%>'
                                    CommandName='GRDSTATUS' runat="server" ImageUrl='<%# getStatusImage(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"IsApproved"))) %>' />
                            </ItemTemplate>
                        </asp:TemplateField>

        <asp:BoundField DataField="Col2" HeaderText="Col2" />
         //Other Respective  columns....
                ...........
                ..........
    </Columns>

</asp:GridView>
因此,将在“intStatus”的基础上设置相应的活动/非活动映像

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack){
        LoadGridView();
    }
}

private void LoadGridView()
{
    this.GridView.DataSource = GetUsersFromDatabase();
    this.GridView.DataBind();
}

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var user = e.Row.DataItem as UserModel;
        var enabledImgBtn = e.Row.FindControl("EnabledImgBtn") as ImageButton;
        if (enabledImgBtn != null)
            enabledImgBtn.ImageUrl = user.IsEnabled ? "~/YourImagePath/enabled.png"
                                                    : "~/YourImagePath/disalbed.png";
    }
}

protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ResetUserState")
    {
        if (e.CommandArgument!= null)
           { 
            var userName = e.CommandArgument.ToString();            
            //Change user enabled state and Update database
            //Sample code:
             var user = FindUserByName("userName");
             user.IsEnabled = !user.IsEnabled;
             //SaveInDatabase(user);
             LoadGridView();
           }
    }
}
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="false" 
    onrowcommand="GridView_RowCommand" onrowdatabound="GridView_RowDataBound">

    <Columns>
         <asp:TemplateField HeaderText="Change Status" ItemStyle-CssClass="GrdItemImg">
                            <ItemTemplate>
                                <asp:ImageButton ID="ibtnChangeActiveStatus" CommandArgument='<%#Eval("RecordID")%>'
                                    CommandName='GRDSTATUS' runat="server" ImageUrl='<%# getStatusImage(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"IsApproved"))) %>' />
                            </ItemTemplate>
                        </asp:TemplateField>

        <asp:BoundField DataField="Col2" HeaderText="Col2" />
         //Other Respective  columns....
                ...........
                ..........
    </Columns>

</asp:GridView>
public string getStatusImage(int intStatus)
    {
        string strStatus = string.Empty;

        if (intStatus == 1)
        {            
            strStatus = "~/images/active.png";
        }
        else
        {
            strStatus = "~/images/inactive.png";
        }

        return strStatus;
    }