您的位置:程序门 -> .net技术 -> c#



listview控件中的图标问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


listview控件中的图标问题[已结贴,结贴人:jonheung]
发表于:2007-07-27 16:23:06 楼主
程序目标:
先从数据库中读取员工信息,将其填充到listview控件中供人流览,根据员工性别字段的不同,男性一种图标,女性一种图标,在同一个listview中显示
主要代码如下:
datatable   tbl   =   transdata.getdatatable( "select   em_id,em_name,em_sex,em_group,em_mobile   from   employees   order   by   em_id ");
                                        ltvemployee.items.clear();
                                        for   (int   i   =   0;   i   <   tbl.rows.count;   i++)
                                        {
                                                ltvemployee.items.add(tbl.rows[i][ "em_id "].tostring());
                                                ltvemployee.items[i].subitems.add(tbl.rows[i][ "em_name "].tostring());
                                                ltvemployee.items[i].subitems.add(tbl.rows[i][ "em_sex "].tostring());
                                                ltvemployee.items[i].subitems.add(tbl.rows[i][ "em_group "].tostring());
                                                ltvemployee.items[i].subitems.add(tbl.rows[i][ "em_mobile "].tostring());
                                                if   (ltvemployee.items[i].subitems[2].text   ==   "男 ")   ltvemployee.items[i].imageindex   =   2;
                                                else   ltvemployee.items[i].imageindex   =   3;
                                        }
问题:将数据填充到listview控件后,始终只显示一种图标,即女性的那种图标(imageindex为3),不知道怎样解决这个问题,求高手指教!谢谢!
发表于:2007-07-27 20:52:121楼 得分:0
没人告诉我吗?自己顶上去!!!
发表于:2007-07-27 23:52:072楼 得分:10
foreach(datarow   dr   in   tbl.rows)
{
listviewitem   item   =   new   listviewitem();
item.text   =   dr[ "em_id "].tostring();
item.subitems.add(dr[ "em_sex "].tostring());
...
if(dr[ "em_sex "].tostring()   ==   "男 ")
{
item.imageindex   =   2;
}
else
{
item.imageindex   =   3;
}
ltvemployee.items.add(item);
}

还有确认一下你的ltvemployee.imagelist   是否绑定了imagelist
发表于:2007-07-30 14:17:123楼 得分:0
还是不行,我的ide有问题?
发表于:2007-07-30 20:57:144楼 得分:0
那你就试试拉一个listview   到窗体上
然后添加两个item一个男一个女选中设置好imageindex看看能不能呈现。
发表于:2007-07-30 21:21:585楼 得分:0
可以啊
发表于:2007-07-31 09:25:096楼 得分:0
上面的代码我n年都是这么写的,绝对没有问题。
你自己好好检查一下其他代码吧!
发表于:2007-07-31 09:35:367楼 得分:5
if   (ltvemployee.items[i].subitems[2].text   ==   "男 ")   ltvemployee.items[i].imageindex   =   2;
                                                else   ltvemployee.items[i].imageindex   =   3;

----------------------------

这句出问题.

sex的项应该是1吧.subitems[1].text   ==   "男 "
发表于:2007-07-31 10:20:008楼 得分:0
sqlconnection   cn   =   new   sqlconnection( "data   source   =   localhost;user   id   =   sa;password   =   pp;database   =   db ");
                        cn.open();
                        sqlcommand   cmd   =   new   sqlcommand( "select   wo_id,wo_state   from   working ",cn);
                        datatable   tbl   =   new   datatable();
                        sqldataadapter   da   =   new   sqldataadapter(cmd);
                        da.fill(tbl);
                        for   (int   i   =   0;   i   <   tbl.rows.count;   i++)
                        {
                                listviewitem   lvi   =   new   listviewitem();
                                switch   (tbl.rows[i][ "wo_state "].tostring())
                                {
                                        case   "完成 ":
                                                lvi.forecolor   =   color.red;
                                                break;
                                        case   "开始 ":
                                                lvi.forecolor   =   color.green;
                                                break;
                                        case   "待工 ":
                                                lvi.forecolor   =   color.blue;
                                                break;
                                        default:
                                                break;
                                }
                                lvi.text   =   tbl.rows[i][ "wo_id "].tostring();
                                ltv1.items.add(lvi);
                        }
这样写应该没错吧,就是不行,列出来的几个item全是黑色的字。
但是这么写又可以:
for   (int   i   =   0;   i   <   10;   i++)
                        {
                                listviewitem   lvi   =   new   listviewitem();
                                switch   (i   %   3)
                                {
                                        case   0:
                                                lvi.forecolor   =   color.red;
                                                break;
                                        case   1:
                                                lvi.forecolor   =   color.blue;
                                                break;
                                        case   2:
                                                lvi.forecolor   =   color.green;
                                                break;
                                        default:
                                                break;
                                }
                                lvi.text   =   i.tostring();
                                listview1.items.add(lvi);
                        }
我快疯了,谁能帮帮我!?
发表于:2007-07-31 10:33:559楼 得分:0
sowenxiong(sowen),你的代码确实没有错,我的郁闷就是在这里,找不出错的地方来
发表于:2007-07-31 10:35:2110楼 得分:0
mingle_qin(sdfsdf),应该是2,listview的subitems的序列是从1开始算的
发表于:2007-08-30 06:57:3711楼 得分:5
listview3.stateimagelist   =   imagelist1
                dim   xh   as   integer   =   listview3.items.count
                listview3.items.add( "uu ",   1)
                me.listview3.items.insert(xh,   new   listviewitem(new   string()   {(xh   +   1).tostring,   " ",   " ",   " ",   " ",   " "}))
                listview3.items(0).imageindex   =   0


快速检索

最新资讯
热门点击