отображать изображение в столбце gridview на основе значения в другом столбце - PullRequest
2 голосов
/ 16 ноября 2009

У меня есть вид сетки, в котором есть столбец с флажком и столбец изображения

теперь, если флажок установлен, столбец изображения должен показывать зеленое изображение галочки, а если флажок не установлен, он должен показывать неправильный значок изображения в последовательных строках.

на странице .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 ]

4 голосов
/ 17 ноября 2009

Спасибо за ввод, но я получил ответ .. вот как

<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, а затем изменить его на любое изображение в коде. если вы не дадите URL-адрес изображения на странице aspx, он не будет работать ...

1 голос
/ 16 ноября 2009

Попробуйте переключить URL-адрес изображения в событии OnRowDataBound 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";
    }
}
1 голос
/ 16 ноября 2009

Прошли ли вы код в отладке и убедились, что ваша подпрограмма foreach работает так, как вы ожидаете? Всегда сначала проверяйте очевидное ... правильны ли ваши пути изображения? «/» означает, что оно ищет изображение относительно папки, в которую загружена страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...