如下图,今天用GridView显示一列smallint(其实这里也可以用布尔型)为:是和否,通常的做法是用TemplateField直接前端页面显示而非用BoundField来显示。
<asp:TemplateField HeaderText="自有仓库">
<ItemTemplate>
<%# Eval("IsOwned").ToString()=="1"?"是":"否" %>
</ItemTemplate>
</asp:TemplateField>
因为我需要GridView的排序,所以还是用BoundField的形式,前后台结合,前台代码在GridView中加入事件OnRowDataBound="gridView_ItemDataBound"
<asp:BoundField DataField="IsOwned" HeaderText="自有仓库" HtmlEncode="False" SortExpression="IsOwned">
<HeaderStyle HorizontalAlign="Center" Font-Bold="False" />
<ItemStyle Wrap="False" />
</asp:BoundField>
后台代码如下,要注意e.Row.Cells[6]中的index
protected void gridView_ItemDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//自有仓库
if (e.Row.Cells[6].Text == "1")
{
e.Row.Cells[6].Text = "是";
}
else
{
e.Row.Cells[6].Text = "否";
}
}
}
到此搞定!
附录另一种实现,前台代码:
<asp:TemplateField HeaderText="自有仓库">
<ItemTemplate>
<%# FormatIsOwned(Eval("IsOwned").ToString())%>
</ItemTemplate>
</asp:TemplateField>
后台代码:
protected string FormatGenderData(int IsOwned)
{
string[] arrs = new string[] { "否", "是" };
return arrs[IsOwned].ToString();
}
这里用数组的形式来处理,也可以用if来实现。