将图像加载到 Gridview

Posted

技术标签:

【中文标题】将图像加载到 Gridview【英文标题】:Load image to Gridview 【发布时间】:2013-12-17 22:13:16 【问题描述】:

我整天都在想办法解决这个问题。我正在尝试使用 3 列中的 SQL 数据加载 GridView,然后将图像动态添加到第 4 列。 SQL 中的数据加载良好,但无论我做什么,我都无法加载图像。这是我的代码:

SqlCommand cmd1 = new SqlCommand("StoredProc", myConnection1);
cmd1.CommandType = CommandType.StoredProcedure;
SqlDataReader reader = cmd1.ExecuteReader();
while (reader.Read())

     if (reader["ServiceStatus"].ToString().ToLower() == "stopped")
     
          ImageField status = new ImageField();
          status.HeaderText = "Status";
          status.Visible = true;
          GridView1.Columns.Add(status);
          status.DataAlternateTextFormatString = @"~/Images/Image.gif";
     

     GridView1.DataSource = reader;
     GridView1.DataBind();

我已尝试创建一个数据表并对其进行填充,但它仍然无法正常工作。我知道必须有一个简单的方法来做到这一点。我错过了什么?

编辑:

我现在正在使用 TemplateField,并且我正在显示一个默认图像:

<asp:TemplateField HeaderText="Status">
     <ItemTemplate>
          <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/greydot.jpg"/>
     </ItemTemplate>
</asp:TemplateField>

那么我应该如何在后面的代码中引用这个 ImageURL 以更改该图像?图像存储在解决方案中,而不是存储在 SQL 中。

【问题讨论】:

我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。 您可能还需要设置 DataImageUrlField 才能显示任何图像,然后在 DataAlternateTextFormatString (MSDN usage example) 中设置格式字符串。跨度> 【参考方案1】:

您可以将路径存储在数据库中,也可以动态地提供相应图像的路径。像这样:

ImageUrl='<%#Eval("ProductImage")

【讨论】:

我曾想过这样做,但这应该是一个动态的网格视图,它根据状态显示图像。我讨厌一张只有 3 张图片的桌子。如果我别无选择,我会沿着那条路走,但必须有另一条路。【参考方案2】:
protected void gvUserProfile_DataBound(object sender, EventArgs e) 

    if ( e.Row.RowType == DataControlRowType.DataRow ) 
    
        // set reference to current data record 
        // use IDataRecord if you bind to a DataReader, and DataRowView if you bind to a DataSet
        DataRowView dataRow = ( DataRowView ) e.Row.DataItem;
        string myflag = dataRow [ "yourColumnNameHere" ].ToString ( );
        if ( myflag == "0" ) 
        
            // do something amusing here
        
    

2 - 如果您在 RowDataBound 上实例化任何新控件(例如您的 ImageButton ),则必须将实例化的控件添加到单元格的 Controls 集合中。类似的东西

e.Row.Cells [ 0 ].Controls.Clear ( );
ImageButton img = new ImageButton ( );
img.ImageUrl = "~/images/editGray.gif";
e.Row.Cells [ 0 ].Controls.Add ( img );

【讨论】:

以上是关于将图像加载到 Gridview的主要内容,如果未能解决你的问题,请参考以下文章

将图像加载到 Gridview

从 HTML 将图像加载到 UITextview/WKWebView

将图像加载到现有 Mat 中

使用 AsyncImageView 将图像加载到 ImageView 宽度

将图像视图加载到 UIScrollView 和性能

UICollectionView 在滚动 Alamofire 时将图像加载到错误的位置