根据其他列中的值在gridview列中显示图像

时间:2009-11-15 23:33:42

标签: c# asp.net visual-studio-2008 gridview

我有一个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>

和.cs文件是:

 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";
                }
            }

它没有在列

中显示任何图像

请建议一种方式...... 感谢

3 个答案:

答案 0 :(得分:4)

感谢输入,但我得到了答案..这就是

<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>

这是.CS代码

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";
            }
        }

我了解到你必须在aspx页面中提供一个图像,然后将其修改为后面代码中的任何图像。如果你不在aspx页面中提供图片网址,那就不行了......

答案 1 :(得分:1)

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

答案 2 :(得分:1)

尝试在OnRowDataBound的{​​{1}}事件中切换图片网址。

GridView