【问题标题】:ASP.NET Gridvgiew. Swap string for imageASP.NET 网格视图。交换图像字符串
【发布时间】:2012-07-24 18:44:40
【问题描述】:

我正在使用 gridview,我正在使用 gridview 中的 boundfield 将数据库中的数据显示到其中。

gridview 中的 2 列仅显示 YESNO 值。我想将“是”或“否”换成绿色的勾号图像或红色的 X 图像……谁能帮我解决这个问题或为我指出类似的解决方案。我用c#

【问题讨论】:

  • 请在您呈现“是”和“否”的位置发布代码。答案取决于你如何做。

标签: c# asp.net gridview webforms


【解决方案1】:

要在 aspx 页面上使用的代码:

  <asp:TemplateField HeaderText="Image">
      <HeaderStyle BackColor="#FFD653" Width="10%" HorizontalAlign="Center" />                               
      <ItemTemplate>                         
          <img src='<%#GetImagePath(Eval("databasecolumnvalue").ToString())%>'/>
      </ItemTemplate>
      <ItemStyle HorizontalAlign="Center"  />
  </asp:TemplateField>

用于cs文件的代码

 public void GetImagePath(object value)
  {
    if(!string.IsNullOrEmpty(Convert.ToString(value)))
      {
         if(Convert.ToString(value)=="Yes")
             return "yes image url";
         else if(Convert.ToString(value)=="No")
             return "no image url";
      }
   }

【讨论】:

    【解决方案2】:

    使用TemplateFields 填充您的gridview

    如果您有,没有值的字段,将&lt;%# Eval("YourValue") %&gt;传递给返回您需要使用的图像路径的方法

    例如

    public static string GetImage(string value)
    {
        var str = "default image url";
        if(!string.IsNullOrEmpty(value))
        {
        if(value=="Yes")
              str = "yes image url";
        else if(value=="No")
              str = "no image url";
        }
        return str;
    }
    

    【讨论】:

      【解决方案3】:

      你也可以试试这个

      <asp:TemplateField>
      <ItemTemplate>
          <%= Eval("Field") == "Yes" ? "<img src='tick.png' />" : "<img src='cross.png' />" %>
      </ItemTemplate>
      </asp:TemplateField>
      

      【讨论】:

        【解决方案4】:

        您可以拥有一个带有 runat="server" 属性的图像,并在 RowDataBound 事件中更改代码隐藏中的 src。

        例如:

        <ItemTemplate><img id="theImage" runat="server" /></ItemTemplate>
        

        在代码隐藏中:

        Control ctl = e.Row.Cells[0].FindControl("theImage");
        HtmlControl htmlCtl = ctl as HtmlControl;
        
        if (htmlCtl != null)
        {
            String image = ((DataRowView)e.Row.DataItem)[0] as String == "YES" ? "images/accept.png" : "images/cancel.png";
            htmlCtl.Attributes["src"] = image;
        }
        

        【讨论】:

          【解决方案5】:

          在您的代码中创建一个公共函数,它应该接受字符串类型参数,并在您的设计/.aspx 页面上使用该公共函数并检查公共函数,如果是,则返回

          <img src='path of your Green tick image' />
          

          否则返回

          <img src='path of your red X image' />
          

          但是您将无法在绑定字段上使用此公共功能...您必须为此使用模板字段

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-06
            • 1970-01-01
            • 2017-12-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多