C# 如果源是DataTable,如何在GridView中放置不同的值?

C# 如果源是DataTable,如何在GridView中放置不同的值?,c#,.net,asp.net,gridview,datatable,C#,.net,Asp.net,Gridview,Datatable,首先,我有一个DataTable,它将数据存储在多个字段中。其中一个字段存储一个值,该值可以是“1”、“0”或“-1” 我试图完成的是用这个DataTable中包含的所有数据填充GridView,前面提到的字段除外。我不想显示这个字段,而是想显示一列,根据值(0、1或-1)显示不同的图标 换句话说,如果一行在DataTable中的该字段中包含值“0”,我希望在GridView中的等效单元格中显示一个红色圆圈图标 谁能解释一下这是如何实现的?下面是一些代码,可能有助于进一步解释这种情况 GridV

首先,我有一个DataTable,它将数据存储在多个字段中。其中一个字段存储一个值,该值可以是“1”、“0”或“-1”

我试图完成的是用这个DataTable中包含的所有数据填充GridView,前面提到的字段除外。我不想显示这个字段,而是想显示一列,根据值(0、1或-1)显示不同的图标

换句话说,如果一行在DataTable中的该字段中包含值“0”,我希望在GridView中的等效单元格中显示一个红色圆圈图标

谁能解释一下这是如何实现的?下面是一些代码,可能有助于进一步解释这种情况

GridView由DataTable中包含的数据填充

source = new DataSource();
TableGridView.DataSource = source.FillTable();
TableGridView.DataBind();
这之后该怎么办


编辑:解决方案作为注释添加到下面

有不同的方法:

1) 您可以向图像的DataTable中添加一个字段,并用对应于该值的图像url填充该字段。将图像添加到GridView并将其ImageUrl设置为该字段

2) 将模板字段添加到GridView并添加3个图像。在每个图像的Visible属性中,设置类似于
(x表示0、1或-1)的内容。这样,只显示一个图像,其他图像隐藏(甚至不渲染)

从臀部开始:

<TemplateField>
    <ItemTemplate>
         <asp:image runat="server" imageurl="~/images/0.png" Visible='<%# (int)Eval("MyNumericValue") == 0 %>' />                
         <asp:image runat="server" imageurl="~/images/1.png" Visible='<%# (int)Eval("MyNumericValue") == 1 %>' />
         <asp:image runat="server" imageurl="~/images/-1.png" Visible='<%# (int)Eval("MyNumericValue") == -1 %>' />
    </ItemTemplate>
</TemplateField>


已解决:我在ASP.NET代码中创建了TemplateField,并在.cs类中以编程方式创建了其他字段。接下来,我添加了一段代码,用于按列的顺序切换。希望有人会觉得这很有帮助。

Jeroen,你知道如何将此代码应用到在后面的C#代码中创建的现有列中吗?如果你发布关于如何创建这些列的代码,也许可以。有不同的方法可以做到这一点。我不认为它会像那样起作用。我觉得你把事情弄得更复杂了。也许如果你发布任何工作代码,我可以帮你,但这看起来你只是在摆弄。我现在已经让它工作了。谢谢你的帮助。对于任何有类似问题的人,我在我的问题下面添加了一条注释。已解决:我在ASP.NET代码中创建了TemplateField,并在.cs类中以编程方式创建了其他字段。接下来,我添加了一段代码,用于按列的顺序切换。希望有人觉得这有帮助:)