我喜欢在数据绑定ASP.NET 4.0 GridView
中为布尔字段添加图像按钮,如果是真的则显示一个图像,如果是,则显示另一个图像。
ImageField
没有给我点击能力,我不知道如何根据字段值更改按钮上的图像。使用Button触发器,我将运行一个存储过程来更改Boolean字段的状态。
我正在使用C#进行编程
我怎样才能做到这一点?
答案 0 :(得分:2)
创建模板字段并将图像按钮放入其中。
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat="server" ID="myImageButton" />
</ItemTemplate>
</asp:TemplateField>
然后在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";
}
}