2009-11-15 128 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"; 
    } 
}