如何在asp.net gridview中基于字段数据显示图像按钮

时间:2011-12-26 06:43:31

标签: c# asp.net .net .net-4.0

我喜欢在数据绑定ASP.NET 4.0 GridView中为布尔字段添加图像按钮,如果是真的则显示一个图像,如果是,则显示另一个图像。

ImageField没有给我点击能力,我不知道如何根据字段值更改按钮上的图像。使用Button触发器,我将运行一个存储过程来更改Boolean字段的状态。

我正在使用C#进行编程

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

第1步: -

创建模板字段并将图像按钮放入其中。

<asp:TemplateField>
    <ItemTemplate>
        <asp:ImageButton runat="server" ID="myImageButton" />
    </ItemTemplate>
</asp:TemplateField>

第2步: -

然后在RowDataBound事件内检查条件并指定图片网址

protected void gridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ImageButton myImageButton = e.Row.FindControl("myImageButton") as ImageButton;
        if (myImageButton != null)
        {
            if (Convert.ToBoolean(DataBinder.Eval(e.Row.DataItem, "myBooleanField")))
            {
                myImageButton.ImageUrl = "image1.jpg";
            }
            else
            {
                myImageButton.ImageUrl = "image2.jpg";
            }
        }
    }
}

答案 1 :(得分:1)

一个非常简单直接的解决方案是使用两个图像字段,并根据您的布尔值隐藏其中一个或另一个。

答案 2 :(得分:1)

首先使用Template Field并放置一个ImageButton,然后将一个代码Behind方法分配给ImageUrl属性,此方法将根据'Status'返回图像路径。 还可以使用CommandArgument属性来存储Status,当单击该按钮时,可以使用该属性更新数据库的“Status”。

<asp:TemplateField>
   <ItemTemplate>
    <asp:ImageButton runat="server" ID="ImgBtnStatus" CommandArgument='<%# Eval("Status") %>'  ImageUrl='<%# Bind_Image(Eval("Status").ToString()) %>' />
     </ItemTemplate>
</asp:TemplateField>

这里我们调用一个代码隐藏方法,它看起来如下所示。

public string Bind_Image(string Status)
{
    bool status = Convert.ToBoolean(Status);
    // If Status is true , bind the img_true.bmp
    if (status)
    {
        return "~/images/img_true.bmp";
    }
    else
    {
        return "~/images/img_false.bmp";
    }
}