【问题标题】:Adding image to GridView created in CodeBehind将图像添加到在 CodeBehind 中创建的 GridView
【发布时间】:2015-06-09 15:09:00
【问题描述】:

我要做的第一件事是创建一个数据表,然后将它绑定到一个 GridView
这是我的代码

 DataTable dt = new DataTable();
 DataColumn imgC = dt.Columns.Add("img", typeof(string));
 DataRow  row1 = dt.NewRow();
 row1["img"] = "~images/foo.png";

 GridView gv = new GridView();
 gv.DataSource = dt;
 gv.DataBind();
 cust_services.Controls.Add(gv);

我不知道从哪里开始,因为它只显示文本,我尝试创建一个图像并只是写

row1["img"] = img;

【问题讨论】:

标签: c# asp.net gridview datatable


【解决方案1】:

您可以利用Gridview 中的<asp:ImageField/> 来实现此目的。所以你的标记看起来像

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:ImageField DataImageUrlField="Value" ControlStyle-Width="100" ControlStyle-Height="100" HeaderText="My Image" />
    </Columns>
</asp:GridView>

在您的 C# 代码中,您可以使用 List 添加图像。所以一些简单的事情

List<ListItem> files = new List<ListItem>();
files.Add(new ListItem("~/Images/SomeImage.jpg"));

GridView2.DataSource = files;
GridView2.DataBind();

这只会将一张图片添加到网格中。如果您想将特定目录中的所有图像添加到网格中,则只需使用 foreach 循环即可。

string[] filePaths = Directory.GetFiles(Server.MapPath("~/Images/"));
    List<ListItem> files = new List<ListItem>();
    foreach (string filePath in filePaths)
    {
        string fileName = Path.GetFileName(filePath);
        files.Add(new ListItem(fileName, "~/Images/" + fileName));
    }
    GridView2.DataSource = files;
    GridView2.DataBind();

【讨论】:

    【解决方案2】:

    您的绑定是正确的,但您还需要将图像绑定到 GridView 中的 ImageField。

    <asp:ImageField DataImageUrlField="BoundName"></asp:ImageField>
    

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2013-05-22
      • 1970-01-01
      • 2014-02-20
      相关资源
      最近更新 更多