首页 新闻 会员 周边 捐助

关于项目中listView获取字段显示的问题

0
悬赏园豆:100 [已解决问题] 解决于 2008-05-15 22:07
<P>假如状态表 1 = 正常 2 = 不正常,<BR>然后设备表 状态ID,<BR>你创建的是设备表的实体,返回的是设备表的泛型对象,<BR>在用户眼里,你必须摸掉ID,而显示中文,<BR>我现在就是用遍历,然后在遍历里写Manager.GetState(int stateid),返回它的中文,显示在列表中,而它的 tag值才选用它的ID段</P> <P>&nbsp;我做到这里的时候就困惑了!<BR>造成了好多苀余代码,<BR>代码量也增多了<BR></P> <P>&nbsp;有联想哈希表去存储这些东西,<BR>也有联想视图,但是视图不能返回这么些东西!<BR>因为我返回的全是泛型对象,连表实体就不好做了,<BR></P> <P>&nbsp;就是你从数据库中获取的是连表信息吧,?<BR>返回的是个LIST泛型对象组!<BR>而你显示的时候你必须让他在用户的眼里莫成其它内容的形式,你会怎么做,?</P> <P>我现在的做法是在ID字段里写入一个逻辑类,然后返回它连表的字符串值</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P>
韦小宝的主页 韦小宝 | 初学一级 | 园豆:5
提问于:2008-03-29 22:28
< >
分享
最佳答案
0
interface IStatus { int StatusId{get;} } class Equipment : IStatus { public int StatusId { get ... set...} ... } class WhatEverHasStatus : IStatus { public int StatusId { get ... set...} ... } public static class IStatusExtension { public static string StatusString(this IStatus obj) { switch(obj.status) { case 1: return "正常"; break; case 2: return "异常"; break; ... } } =========== OK,现在可以这么使用了: Equipment eq = new Equipment(...); Console.WriteLine(eq.StatusString); WhatEverHasStatus we = new ....; Console.WriteLine(eq.StatusString); ========== 好处是任意一个类,只要实现了IStatus接口,都能免费获得一个StatusString属性. 如果还有类似Status的情景,也可以一个类实现多个接口,免费获取多个***String属性. ========== 如果你使用的是.Net 3.5以前的版本,只需要在项目中添加一个文件,包含以下代码即可使用扩展方法: namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)] public sealed class ExtensionAttribute : Attribute { } }
deerchao | 大侠五级 |园豆:8367 | 2008-04-01 00:33
其他回答(1)
0
using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Collections.Generic; namespace TestSite { public partial class listtest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List<machine> list = new List<machine>(); for (int i = 0; i < 20; i++) { machine m = new machine(); m.ID = i; m.MyState = Convert.ToByte(Convert.ToByte(i % 2) + 1); list.Add(m); } rp1.DataSource = list; rp1.DataBind(); } } public class machine { private int id; public int ID { get { return id; } set { id = value; } } private byte mystate; public byte MyState { get { return mystate; } set { mystate = value; } } public string MyStateString { get { if (mystate == 1) return "正常"; return "异常"; } } } } <asp:Repeater ID="rp1" runat="server"> <ItemTemplate> 设备ID: <%# Eval("id") %> || 设备状态 <%# Eval("MyStateString") %> <hr /> </ItemTemplate> </asp:Repeater> 设备ID: 0 || 设备状态 正常 设备ID: 1 || 设备状态 异常 设备ID: 2 || 设备状态 正常 设备ID: 3 || 设备状态 异常 设备ID: 4 || 设备状态 正常
沙加 | 园豆:3680 (老鸟四级) | 2008-03-29 23:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册