从数据库中查询得到的值,包含两列 一个是主键,一个是要在ListView中显示的内容。用户在选中ListView中显示的内容时(选中某一行,我的Listview 只显示一列),需要根据选中的内容得对应的主键,
在添加项目时,只添加了要显示的内容,如何把主键也加到项目中,以方便在后边选中项目时,方便获取主键?

解决方案 »

  1.   

    for (int i = 0; i < data.Tables[0].Rows.Count; i++)
                   {
                       ListViewItem li = new ListViewItem();
                       li.SubItems.Clear();                   // li.SubItems[0].Text = dt.Rows[i]["SpID"].ToString();
                       li.SubItems[0].Text = dt.Rows[i]["Explain"].ToString();                   //li.SubItems.Add(dt.Rows[i]["Explain"].ToString());                   this.listView1.Items.Add(li);
                   }添加ListView 项目时就是像这个样子。
      

  2.   

    增加 隐藏列
    或者
    每一项ListViewItem都有一个tag属性,可以保存信息
      

  3.   

    我的ListView中就有一列,这一列应该包含两部分内容(要显示的内容,和这个内容对应的主键),在用户选中某一列时,要获取这个主键,这么做好像不行啊。
      

  4.   

    哦,等下我试下Tag属性我是这样添加的:
                    for(int i=0;i<data.Tables[0].Rows.Count;i++)
                    {
                        ListViewItem li = new ListViewItem();
                        li.SubItems.Clear();
                        li.SubItems[0].Text = dt.Rows[i]["SpID"].ToString();
                        li.SubItems.Add(dt.Rows[i]["Explain"].ToString());
                        this.listView3.Items.Add(li);
                    }这样的话每行就有两列了,一列多余是主键,另一列是要显示的内容, 现在用户选用这个要显示的列,我想得到这个 explian 字段对应的主键。
      

  5.   

    我在TreeView  控件中是这么干的,每个TreeView节点 有Tag的属性用于保存主键,在ComboBox中 分别用Text和Value保存的。不知道ListView中也有这个Tag啊。
      

  6.   

    怎么获得选用的ListViewItme呢?
    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
            {            ListView Lv = (ListView)sender;            ListViewItem lItem = Lv.SelectedItems;//// 错误的
            }