读取数据至gridview问题

anycool 2008-06-09 10:55:26
数据库某字段数据为0 1 2
0为正常
1为故障
2为维修
现在将数据取出至gridview上,显示的是0 1 2
请问怎样将读出的0 1 2在gridview上显示为:正常 故障 维修
...全文
152 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyldir 2008-06-12
  • 打赏
  • 举报
回复
(DataBinder.Eval(Container.DataItem, "字段")==1?正常:(DataBinder.Eval(Container.DataItem, "datetime")==2?故障:维修
tiancs 2008-06-12
  • 打赏
  • 举报
回复
Select 字段名1,(case [字段名2(取值为1,2,3的那个字段)] when 1 then '故障' when 2 then '维修' else '正常' end) as state from tablename

或者你在gridview 的RowDataBound事件中 用
switch (value)
{
case "0":
e.Row.Cells[6].Text= "正常";
break;
case "1":
e.Row.Cells[6].Text= "故障";
break;
case "2":
e.Row.Cells[6].Text= "维修";
break;
}

S170393163 2008-06-12
  • 打赏
  • 举报
回复
放SQL中转换

select status = case status when 0 then '正常' when 0 then '故障' else '维修 ' end)
from table
hubblebubblepig 2008-06-12
  • 打赏
  • 举报
回复
4# 7# up!!~
whb147 2008-06-12
  • 打赏
  • 举报
回复
protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//e.Row.Cells[6].Controls[0];
取值判断,然后写回去
}
}
whb147 2008-06-12
  • 打赏
  • 举报
回复
最好在sql中,就处理好,9楼的不错
juanjuanPrograms 2008-06-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xie_yanke 的回复:]
在代码中判断,
.._RowDataBound...
if e.Row.DataItem("...").ToString().... then
e.Row.Cells[...].Controls.clear();
e.Row.Cells[...].Controls.Add(new LiteralControl("..."));
end if

在SQL里转换, 直接读取:
(.... case [字段] when 1 then 'a' when 2 then 'b' else 'c' end) as ...)
[/Quote]


不错,对的
china_k1 2008-06-10
  • 打赏
  • 举报
回复
在html页面中
<Columns>
<asp:TemplateField HeaderText="yourField">
<ItemTemplate>
<%# Eval("yourField").ToString()=="0"?"正常":Eval("yourField").ToString()=="1"?"故障":"维修" %>'
</ItemTemplate>
</asp:TemplateField>
</Columns>
你可以试试
hanguoji84 2008-06-10
  • 打赏
  • 举报
回复
大家已经为你提供很多解决方法了,建议使用存储过程:

SQL里直接转换,例子:

Select name,(case [字段名] when 1 then '故障' when 2 then '维修' else '正常' end) as state from tablename
shui8iuhs 2008-06-10
  • 打赏
  • 举报
回复
可以在RowDataBind()里判断.
fanwenxuan 2008-06-10
  • 打赏
  • 举报
回复
7楼的办法好
amandag 2008-06-09
  • 打赏
  • 举报
回复
aspx
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField HeaderText="yourField">
<ItemTemplate>
<%# ShowResult(Eval("yourField").ToString()) %>'
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


aspx.cs
protected string ShowResult(string value)
{
string result = string.Empty;
switch (value)
{
case "0":
result = "正常";
break;
case "1":
result = "故障";
break;
case "2":
result = "维修";
break;
}
return result;
}
elf512 2008-06-09
  • 打赏
  • 举报
回复
四楼的两种方法都不错
xie_yanke 2008-06-09
  • 打赏
  • 举报
回复
俺说是的两种办法.
xie_yanke 2008-06-09
  • 打赏
  • 举报
回复
在代码中判断,
.._RowDataBound...
if e.Row.DataItem("...").ToString().... then
e.Row.Cells[...].Controls.clear();
e.Row.Cells[...].Controls.Add(new LiteralControl("..."));
end if

在SQL里转换, 直接读取:
(.... case [字段] when 1 then 'a' when 2 then 'b' else 'c' end) as ...)
anycool 2008-06-09
  • 打赏
  • 举报
回复
其实我的意思就是显示的问题
因为刚从数据库提取的是比如:1
那么我想在最终的gridview上把这个1显示为故障,而不是显示1
fanyongbo 2008-06-09
  • 打赏
  • 举报
回复
同意1楼的
maddemon 2008-06-09
  • 打赏
  • 举报
回复
这个判断应该不止一处用到。
建议写个小方法。。
绑定的时候调用小方法就行了。。
chenguang79 2008-06-09
  • 打赏
  • 举报
回复
我一般都用七楼的方法
Catmaoo 2008-06-09
  • 打赏
  • 举报
回复
支持7楼,

JF
加载更多回复(4)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧