(100分)求GridView 如何根据类型ID号替换相应类型名称

sknice 2010-10-29 04:18:57
GridView 邦定的数据源,一个列邦定的是类型ID,如何在显示的时候把类型ID信息替换成 类型名称,
记得以前做项目的时候,遇到过类似问题,大概思路好像是在 .cs代码里面写一个静态方法,完成的功能是根据类型ID,返回
类型名称,然后 GridView 的HTML界面调用这个方法,完成替换操作,现在只知道大概是这样做的,具体如何做已经不记得了,
这个问题应该很常见,有比较好的办法的朋友介绍下,谢谢各位
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyfobject 2011-04-18
  • 打赏
  • 举报
回复
我知道了,那个后台的代码可以作为c#脚本放在前台——或者直接在前台写一个databound事件绑在datagrid上,在某博客找到的一篇文章——

http://www.cnblogs.com/fusion/articles/126994.html
qh617 2010-10-29
  • 打赏
  • 举报
回复
//后台代码
public string GetTypeName(TypeID)
{
...得到TypeName
return TypeName;
}

//前台代码
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblTypeName" runat="server" Text='<%#GetTypeName(Eval("TypeId")()) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
sknice 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shaoliang520xi 的回复:]

<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lbla" runat="server" Text='<%#GetTypeName(Eval("TypeId").ToString()) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


protected string GetTypeName(string TypeId)
{
string TypeName = "";
switch (TypeId)
{
case "1": TypeName = "类型1"; break;
case "2": TypeName = "类型2"; break;
}
return TypeName;
}
[/Quote]
我试过了,这样是可以的,还有一个小问题就是,我读取类型名称的cs代码写在了一个公共类 AdvancedSearchDAL.cs 里面了,
我把html代码改成

<asp:TemplateField HeaderText="信息密级" HeaderStyle-ForeColor="#0080FF">
<ItemTemplate>
<asp:Label ID="lbla" runat="server" Text='<%#AdvancedSearchDAL.GetTypeName("EL",Eval("Level").ToString()) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

后提示 "当前上下文中不存在名称“AdvancedSearchDAL”"
如何在html页面 添加 AdvancedSearchDAL类的引用呢?

l171147904 2010-10-29
  • 打赏
  • 举报
回复
数据源DATATABLE 包含:类型ID,类型名称

GIRD直接绑定显示:类型名称

想用类型ID,可设置 this.GridView1.DataKeyNames = new string[] { "类型ID" };

取值:GridView1.DataKeys[0].Value
sknice 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 thanatos_lum 的回复:]

数据源替换不行吗?比如类型ID列,直接替换成类型名称,最多是加个数据表,或者直接用sql完成,如:
select case when ID =1 then '类型1' end as 类型 from ....
绑定 类型 字段不就行了?
[/Quote]
可以就是麻烦,找最简单的办法
暖枫无敌 2010-10-29
  • 打赏
  • 举报
回复
就像楼上说的那样,在后台写个方法,里面的参数为你的ID,返回你想要的转换的类型,最后在前台页面中进行绑定即可,不过后台的那个方法得是public
细嗅蔷薇 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arthur080319 的回复:]

ls会报错的说
Eval("id") 是Object类型的
所以后台方法的参数也得是object 在方法里面转换
[/Quote]
报错说是Object类型的
你不会加个Eval("id").Tostring() ?
Roger370 2010-10-29
  • 打赏
  • 举报
回复
数据源替换不行吗?比如类型ID列,直接替换成类型名称,最多是加个数据表,或者直接用sql完成,如:
select case when ID =1 then '类型1' end as 类型 from ....
绑定 类型 字段不就行了?
边城的刀声 2010-10-29
  • 打赏
  • 举报
回复

protected String GetName(Object id)
{
if(id == null || id == DBNull.Value) return "";
return dal.QueryNameById((Int32)id).Name;
}
shaoliang520xi 2010-10-29
  • 打赏
  • 举报
回复
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lbla" runat="server" Text='<%#GetTypeName(Eval("TypeId").ToString()) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


protected string GetTypeName(string TypeId)
{
string TypeName = "";
switch (TypeId)
{
case "1": TypeName = "类型1"; break;
case "2": TypeName = "类型2"; break;
}
return TypeName;
}
Arthur080319 2010-10-29
  • 打赏
  • 举报
回复
ls会报错的说
Eval("id") 是Object类型的
所以后台方法的参数也得是object 在方法里面转换
细嗅蔷薇 2010-10-29
  • 打赏
  • 举报
回复

public string str(string id)
{
string str="":
if(id==1)
{
str="第一个类型"
}else if(id==2)
{
str="第二个类型"
}
return str;
}

前台页面在《%#%》 里面调用 把id传个 这个方法就行了
jzcldy 2010-10-29
  • 打赏
  • 举报
回复

protected string replace(int id)
{
Return XXX;
}


<asp:gridview>
.....<%# replace(Eval("id"))%>
</asp:gridvew

62,272

社区成员

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

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

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

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