ASP.NET:如何在GridView中显示从数据库返回的不同值

时间:2010-09-28 16:11:41

标签: c# asp.net vb.net

标记:

<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 =“暂停”;我如何过滤传入的数据,以便我可以显示相关的字符串值而不是表格中的整数?

5 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 修改您的DataSet,以便它 包含字符串的列 表示您的数据 想表现出来。
  2. 使用TemplateField 包含标签。订阅 OnRowDataBound的事件 GridView,并获得该标签 e.Row.FindControl(“LabelID”),演员 你的DataRow的e.Row.DataItem, 并分配字符串表示 那里的整数值。
  3. 我会反对anishmarokey发布的解决方案,因为查询不是正确的地方。想想有点大一点,例如关于本地化。不适用于该解决方案,但使用我建议的两种解决方案。

    <强> EDIT1 : 我对OnRowDataBound事件的回答很熟悉。如果这些对您没有帮助,我恐怕您需要使用谷歌查找更多示例:
    Programmatically access GridView columns and manipulate
    Custom GridView delete button
    How to bind a complex dictionary to a Gridview in asp.net?

    <强> EDIT2 : 我写了一篇文章,进一步阐述了这个主题:http://www.tomot.de/en-us/article/7/asp.net/gridview-overview-of-different-ways-to-bind-data-to-columns

答案 1 :(得分:1)

而不是在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

答案 2 :(得分:1)

假设您没有在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

答案 3 :(得分:1)

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

你所要做的就是加入两个

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

答案 4 :(得分:0)

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

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" />