在CodeBehind中创建的GridView中添加图像

本文关键字:添加 图像 GridView 创建 CodeBehind | 更新日期: 2023-09-27 17:54:46

我要做的第一件事是创建一个Datatable,然后将其绑定到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;

在CodeBehind中创建的GridView中添加图像

您可以在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();

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

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