【问题标题】:ASP.NET: How to display a different value returned from a database in a GridViewASP.NET:如何在 GridView 中显示从数据库返回的不同值
【发布时间】:2010-09-28 16:11:41
【问题描述】:

标记:

<asp:GridView ID="GridView1" runat="Server">
   <Columns>
      <asp:BoundField DataField="status_column" HeaderText="Status" />
      <asp:BoundField ...
      <asp:BoundField ...
   </Columns>
</asp:GridView>

代码:

GridView1.DataSource = _dataSet
DataBind()

存储在我的数据库中的值是整数,1 - 9。每个值都有一个关联的字符串值,我想在我的 GridView 中显示它。例如:1 =“活跃”; 2 =“暂停”;等我将如何过滤传入的数据,以便我可以显示关联的字符串值而不是我的表中的整数?

【问题讨论】:

    标签: c# asp.net vb.net


    【解决方案1】:

    你有两个选择:

    1. 修改您的数据集,使其 包含字符串的列 您的数据的表示 想要展示。
    2. 使用模板字段 包含一个标签。订阅 OnRowDataBound 事件 GridView,并获取该标签 e.Row.FindControl("LabelID"), cast e.Row.DataItem 到您的 DataRow, 并分配字符串表示 你的整数值。

    我建议不要使用 anishmarokey 发布的解决方案,因为该查询不适合此问题。想想大一点,例如本地化。不适用于该解决方案,但适用于我建议的两个解决方案。

    编辑1: 我对 OnRowDataBound 事件的类似回答。如果这些对您没有帮助,恐怕您需要使用 google 查找更多示例:
    Programmatically access GridView columns and manipulate
    Custom GridView delete button
    How to bind a complex dictionary to a Gridview in asp.net?

    编辑2: 我写了一篇文章进一步阐述了这个话题:http://www.tomot.de/en-us/article/7/asp.net/gridview-overview-of-different-ways-to-bind-data-to-columns

    【讨论】:

    • 你能举一个你的两个解决方案的例子吗?谢谢。
    【解决方案2】:

    而不是在 C# 中进行,如果您使用的是 SQL,您可以尝试使用

    当然后条件在查询中

    SELECT title, price,
            Category = CASE column1
             WHEN column1 = '1' THEN 'Active'
              WHEN column1 = '2' THEN 'On Hold'
              .....
              ELSE 'your value'
            END,
    FROM table
    

    然后绑定到gridview

    【讨论】:

    • category 是别名。这将进入 .cs 页面进行绑定
    【解决方案3】:

    假设您没有在 gridview 中进行编辑,我将在 SQL 中加入 FK 表并将其作为状态而不是 ID 返回。

    --Include this as part of your select statement for the datagrid:
    SELECT CategoryText as status_column
    FROM status_table st INNER JOIN category_table ct ON st.status_column = ct.status_column
    

    【讨论】:

      【解决方案4】:

      由于这是从数据库中返回的,我认为您很可能会在定义类别的表中找到它。

      你所要做的就是加入两者

      Select Item.Id, Item.Title, Item.Price, Category.Id, Category.Name
      From Item
         Inner Join Category
             ON Item.CategoryId = Category.Id
      

      【讨论】:

        【解决方案5】:

        您可以使用 Dictionary 保存 KeyPairValue 列表并尝试在 View 中获取值:

        Dictionary<int,string> stringList = //Any code to fill the dictionary, now each integer is related to a string.
        

        在页面中

         <asp:BoundField DataField="<%Eval(stringList[status_column])%>" HeaderText="Status" />
        

        【讨论】:

        • 你试过代码了吗?那样有用吗?我这里没有 IDE,但它不应该是这样的:'' 或 ''
        • 哎呀,对不起,这是我的错,我没有尝试代码,但我希望这个想法清楚。 citronas,我认为你的代码是正确的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-09
        • 2014-01-18
        • 1970-01-01
        • 2022-01-11
        • 2015-05-09
        相关资源
        最近更新 更多