C# 基于其他列中的值在gridview列中显示图像

C# 基于其他列中的值在gridview列中显示图像,c#,asp.net,visual-studio-2008,gridview,C#,Asp.net,Visual Studio 2008,Gridview,我有一个gridview,它有一个复选框列和一个图像列 现在,如果选中复选框,则图像列应显示绿色勾号图像,如果未选中复选框,则应在连续行中显示错误的图像图标 .aspx页面已关闭 <asp:TemplateField HeaderText="Backup Session Status" SortExpression="backupsessionstatus"> <EditItemTemplate>

我有一个gridview,它有一个复选框列和一个图像列


现在,如果选中复选框,则图像列应显示绿色勾号图像,如果未选中复选框,则应在连续行中显示错误的图像图标

.aspx页面已关闭

 <asp:TemplateField HeaderText="Backup Session Status" 
             SortExpression="backupsessionstatus">
             <EditItemTemplate>
                 <asp:CheckBox ID="CheckBox1" runat="server" 
                     Checked='<%# Bind("backupsessionstatus") %>' />
             </EditItemTemplate>
             <ItemTemplate>
                 <asp:CheckBox ID="CheckBox1" runat="server" 
                     Checked='<%# Bind("backupsessionstatus") %>' Enabled="false" />
             </ItemTemplate>
         </asp:TemplateField>



         <asp:TemplateField HeaderText="Backup Session Status">
             <EditItemTemplate>
                 <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
             </EditItemTemplate>
             <ItemTemplate>
                 <asp:Image ID="Image1" runat="server"/>
             </ItemTemplate>
         </asp:TemplateField>
它不会在列中显示任何图像

请建议一种方法。。。
谢谢

您是否在调试过程中逐步完成了代码,并确保您的
foreach
例程按预期运行?总是先检查明显的。。。你的图像路径正确吗?否“/”表示它正在查找与加载页面的文件夹相关的图像。

尝试在
GridView
OnRowDataBound
事件中切换图像url

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    CheckBox chk = (CheckBox)e.Row.FindControl("CheckBox1");
    if (chk != null)
    {
        Image img1 = (Image)e.Row.FindControl("Image1");
        if (chk.Checked)
            img1.ImageUrl = "greenimage.jpg";
        else
            img1.ImageUrl =  "redimage.jpg";
    }
}

谢谢你的意见,但我得到了答案。。这是怎么回事

<asp:TemplateField HeaderText="Backup Session Status" 
         SortExpression="backupsessionstatus">
         <EditItemTemplate>
             <asp:CheckBox ID="CheckBox1" runat="server" 
                 Checked='<%# Bind("backupsessionstatus") %>' />
         </EditItemTemplate>
         <ItemTemplate>
             <asp:CheckBox ID="CheckBox1" runat="server" 
                 Checked='<%# Bind("backupsessionstatus") %>' Enabled="false" />
         </ItemTemplate>
     </asp:TemplateField>



     <asp:TemplateField HeaderText="Backup Session Status">
         <EditItemTemplate>
             <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
         </EditItemTemplate>
         <ItemTemplate>
             <asp:Image ID="Image1" runat="server" ImageUrl="~/NewFolder1/1258341827_tick.png"/>
         </ItemTemplate>
     </asp:TemplateField>

我了解到,您必须在aspx页面中提供一个imageurl,然后将其修改为代码中的任何图像。如果您不在aspx页面中提供图像url,它将无法工作…

“在连续行中显示错误的图像图标”?你是指连续的列还是行?您编写了建议的“列”。发布的cs代码,它与哪个事件有关?我很确定那不是真的。
<asp:TemplateField HeaderText="Backup Session Status" 
         SortExpression="backupsessionstatus">
         <EditItemTemplate>
             <asp:CheckBox ID="CheckBox1" runat="server" 
                 Checked='<%# Bind("backupsessionstatus") %>' />
         </EditItemTemplate>
         <ItemTemplate>
             <asp:CheckBox ID="CheckBox1" runat="server" 
                 Checked='<%# Bind("backupsessionstatus") %>' Enabled="false" />
         </ItemTemplate>
     </asp:TemplateField>



     <asp:TemplateField HeaderText="Backup Session Status">
         <EditItemTemplate>
             <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
         </EditItemTemplate>
         <ItemTemplate>
             <asp:Image ID="Image1" runat="server" ImageUrl="~/NewFolder1/1258341827_tick.png"/>
         </ItemTemplate>
     </asp:TemplateField>
foreach (GridViewRow myRow in GridView1.Rows)
        {
            Image img1 = (Image)myRow.FindControl("Image1");
            CheckBox chkbox1 = (CheckBox)myRow.FindControl("CheckBox1");
            if (chkbox1.Checked)
            {
                img1.ImageUrl = "~/greenimage.jpg";
            }
            else
            {
                img1.ImageUrl = "~/redimage.jpg";
            }
        }