2009-11-15 129 views
2

我如果该复选框被选择的图像的列应显示一个绿色的勾图像具有复选框列和图像列显示图像

现在一个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"; 
       } 
      } 

它并不在列

请建议的方式显示没有图像... 谢谢

+0

“在连续行中显示错误的图像图标”?你的意思是连续的列还是行?你编码建议'列'。 cs代码发布了,哪个事件被绑定到? – 2009-11-16 00:11:41

回答

3

感谢您的输入,但我得到了答案..这是怎么

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

我了解到,你必须给一个IMAGEURL在aspx页面中,然后将其修改为后面代码中的任何图像。如果你不在aspx页面中提供图片url,它不会工作...

+0

我很肯定这不是事实。 – 2009-12-04 03:16:22

1

你在调试中通过代码并保证哟例行程序运行正如你所期望的那样?总是首先检查明显的...你的图像路径是否正确?没有“/”将意味着它正在查找相对于加载页面的文件夹的图像。

1

尝试切换GridViewOnRowDataBound事件中的图像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"; 
    } 
}