Markup:
<asp:GridView ID="GridView1" runat="Server">
<Columns>
<asp:BoundField DataField="status_column" HeaderText="Status" />
<asp:BoundField ...
<asp:BoundField ...
</Columns>
</asp:GridView>
Code:
GridView1.DataSource = _dataSet
DataBind()
The values stored in my database are integers, 开发者_如何学C1 - 9. Each value has an associated string value that I want displayed in my GridView. Ex: 1 = "Active"; 2 = "On Hold"; etc. How would I filter the incoming data so I can display the associated String value instead of the Integers from my table?
You have two options:
- Modify your DataSet, so that it will containt a column for the string representation of the data you want to show.
- Use a TemplateField containing a Label. Subscribe to the OnRowDataBound Event of the GridView, and get that Label with e.Row.FindControl("LabelID"), cast the e.Row.DataItem to your DataRow, and assign the string representation of your integer value there.
I would advise against the solution posted by anishmarokey, because the query is not the correct place for this. Think a little big bigger, about localization for instance. Wouldn't work with that solution, but with both of my suggested solutions.
Edit1:
Similiar answeres from me regarding the OnRowDataBound Event. If these don't help you, I'm afraid you need to use google to find more examples:
Programmatically access GridView columns and manipulate
Custom GridView delete button
How to bind a complex dictionary to a Gridview in asp.net?
Edit2: I've written an article that elaborates this topic further: http://www.tomot.de/en-us/article/7/asp.net/gridview-overview-of-different-ways-to-bind-data-to-columns
instead of doing it in C# , If you are using SQL you can try with
when then condition in a query
SELECT title, price,
Category = CASE column1
WHEN column1 = '1' THEN 'Active'
WHEN column1 = '2' THEN 'On Hold'
.....
ELSE 'your value'
END,
FROM table
which then bind to the gridview
Assuming you are not editing in the gridview, I would just join to the FK table in the SQL and return that as the status instead of the 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
Since this is coming back from a database, I think that is is very likely that you will find at table that defines the categories.
All you have to do is join the two
Select Item.Id, Item.Title, Item.Price, Category.Id, Category.Name
From Item
Inner Join Category
ON Item.CategoryId = Category.Id
you can save a list of KeyPairValue using Dictionary and try to get the value in the View:
Dictionary<int,string> stringList = //Any code to fill the dictionary, now each integer is related to a string.
in the page
<asp:BoundField DataField="<%Eval(stringList[status_column])%>" HeaderText="Status" />
精彩评论