【问题标题】:How to place a different value within a GridView, if the source is a DataTable?如果源是 DataTable,如何在 GridView 中放置不同的值?
【发布时间】:2011-08-04 13:51:09
【问题描述】:

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

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

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

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

GridView 填充了 DataTable 中包含的数据。

source = new DataSource();
TableGridView.DataSource = source.FillTable();
TableGridView.DataBind();

这之后应该怎么做?

编辑:解决方案添加为下面的评论

【问题讨论】:

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

标签: c# .net asp.net gridview datatable


【解决方案1】:

嗯,有不同的方法:

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

2) 向您的 GridView 添加一个模板字段并添加 3 个图像。在每个图像的 Visible 属性中,您设置类似 <% (int)Eval("MyNumericValue") == x %> (x 为 0、1 或 -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>

【讨论】:

  • Jeroen,您知道如何将此代码应用于在后面的 C# 代码中创建的现有列吗?
  • 也许如果您发布有关如何创建它们的代码。有不同的方法可以做到这一点。
  • 我不认为它会那样工作。我认为你让它变得比它必须的更复杂。也许如果你发布任何工作代码我可以帮助你,但这看起来你只是在摆弄。
  • 我现在可以正常工作了。感谢您的帮助。对于有类似问题的任何人,我在我的问题下方添加了评论。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2020-07-22
    • 1970-01-01
    • 2021-01-30
    • 2011-06-15
    • 2013-07-01
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多