ListView泛型取值的一些问题

小可同学 2010-07-17 08:30:19
这是我绑定ListView数据的操作
//取得一个集合
List<BasicDepot> list = SelID > 0 ? bdm.GetAllDepotByID(SelID) : bdm.GetAllDepot();
//我写的一个泛型方法通过实体类集合给ListView赋值的过程
ms.ListViewByModelList<BasicDepot>(list, lvMain);

问题就出来了,我是通过属性排序给ListView赋值的
也就是说,我的在ListView里的公司、上级部门只能是数字了,
这是我的泛型绑定的方法
#region 根据实体集显示ListView数据
/// <summary>
/// ListView显示数据
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="list">实体类集合</param>
/// <param name="lv">ListView控件</param>
public void ListViewByModelList<T>(List<T> list, ListView lv)
{
lv.Items.Clear();
foreach (T t in list)
{
PropertyInfo[] prop = t.GetType().GetProperties();
ListViewItem item = new ListViewItem(prop[0].GetValue(t, null).ToString());
item.Tag = prop[0].GetValue(t, null);
for (int i = 1; i < prop.Length; i++)
{
item.SubItems.AddRange(new string[] { prop[i].GetValue(t, null).ToString() });
}
lv.Items.Add(item);
}
}
#endregion


因为实体类有很多所以不可能每个都要去判断的
有什么办法可以在泛型方法里或者ListView有什么更好的方法可以把上级部门名称、公司名称显示出来呢
换句话说:外键ID怎么转换成名称到ListView里(要泛型或者其他)
期待前辈们指点
...全文
183 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thr21ough 2010-07-17
  • 打赏
  • 举报
回复
这个在实体层中对要显示的对象属性进行拓展,帮顶的时候显示拓展属性就可以了~
例如:
public string Role
{
set{ role=value;}
get{return role;}
}
public string RoleName
{
get
{
if (int.Parse(role)==1)
{
return "管理员";
}
else
{
return "用户";
}
}
}
小可同学 2010-07-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 guankai 的回复:]
继承你的实体修改取数据的语句把名字加上去.
一般ORM实体分两层 ,
一层是工具产生,
二层是继承工具产生的类别.
可以给程序员根据需求修改.
像你这种加(字段/属性)只要修改一下select成 inner join 部门表就可以了
[/Quote]
谢谢
风平心境 2010-07-17
  • 打赏
  • 举报
回复
继承你的实体修改取数据的语句把名字加上去.
一般ORM实体分两层 ,
一层是工具产生,
二层是继承工具产生的类别.
可以给程序员根据需求修改.
像你这种加(字段/属性)只要修改一下select成 inner join 部门表就可以了
小可同学 2010-07-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shiyuyao1987 的回复:]
既然你有这个需求,这条路明显走不通
你重新定义个实体类,在原有的基础上加上几个属性
[/Quote]
我指的是他的 ,这个方法不错
还期待更多高手支招!
shiyuyao1987 2010-07-17
  • 打赏
  • 举报
回复
最好把id都显示成名称
小可同学 2010-07-17
  • 打赏
  • 举报
回复
程序是死的 人是活的 谢谢指点 这是个好方法 非常感谢 哈哈
继续期待ing更多高手出招!
那还请问如果我做的和上面的图一样 用户使用会不会不好 因为他们看不到实际的部门名
vip__888 2010-07-17
  • 打赏
  • 举报
回复
有很多方法
第一:在实体类中添加两个属性,然后根据你的ID读取名称(修改你的存储过程。)
第二:在绑定列的时候读取(不建议使用,效率底下。)
vip__888 2010-07-17
  • 打赏
  • 举报
回复
马诺怎么去后勤了?她不是小秘吗?
shiyuyao1987 2010-07-17
  • 打赏
  • 举报
回复
既然你有这个需求,这条路明显走不通
你重新定义个实体类,在原有的基础上加上几个属性
小可同学 2010-07-17
  • 打赏
  • 举报
回复
其实我整个程序都是通过实体类属性走的
通过界面给实体类赋值,通过实体类给界面赋值
界面控件名和实体类的属性名药一致
刚试了你说的 定义一个公司名 这样不可行 肯定要出错的了
列“Basic_De_CompanyName”不属于表 Table。
shiyuyao1987 2010-07-17
  • 打赏
  • 举报
回复
只是查询的时候才用到新增的属性
小可同学 2010-07-17
  • 打赏
  • 举报
回复
这回影响到我存储过程
增改的存储过程里装的是表的所有字段,也是实体类的所有字段
实体类要是多加字段属性 肯定会报错的
shiyuyao1987 2010-07-17
  • 打赏
  • 举报
回复
你在实体类里就把上级部门名称、公司名称定义出来,
读取的时候读出来就行了

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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