2009-11-15 8 views
2

J'ai un gridview qui a une colonne de cases à cocher et une colonne d'imageimage affichée dans la colonne GridView en fonction de la valeur d'autre colonne

maintenant si la case est cochée la colonne d'image devrait afficher une image coche verte et si la case est pas vérifié, il devrait montrer une mauvaise image dans des lignes consécutives.

la page .aspx a

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

et le fichier .cs est:

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

il n'affiche aucune image dans la colonne

s'il vous plaît suggérer une façon ... merci

+0

"montrer une mauvaise image en rangées consécutives"? Voulez-vous dire colonne ou rangée consécutive? Vous codez la 'colonne' suggérée. Les codes cs affichés, à quel événement est-il lié? –

Répondre

3

Merci pour les entrées, mais je suis la réponse .. voici comment

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

Voici le code .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"; 
      } 
     } 

j'ai appris que vous devez donner un imageurl dans la page aspx et ensuite le modifier à n'importe quelle image dans le code derrière. Si vous ne donnez pas l'URL de l'image dans la page aspx, cela ne fonctionnera pas ...

+0

Je suis presque sûr que ce n'est pas vrai. –

1

Avez-vous traversé le code dans le débogage et assuré yo ur foreach routine est en cours d'exécution comme vous l'attendez? Vérifiez toujours l'évidence en premier ... vos chemins d'image sont-ils corrects? "/" signifiera qu'il cherche l'image relative au dossier dans lequel la page est chargée.

1

Essayez de basculer l'URL de l'image dans l'événement OnRowDataBound du GridView.

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