标记:
<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 =“暂停”;我如何过滤传入的数据,以便我可以显示相关的字符串值而不是表格中的整数?
答案 0 :(得分:2)
您有两种选择:
我会反对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" />