日期:2014-05-18  浏览次数:21041 次

C# listView的显示问题,不知道为什么显示不出来,网上找不到答案
具体内容如下:(连接数据库成功后,我的建立相关列是否正确?)
private void   myForm_Load(object sender, System.EventArgs   e)
{
this.listView1.Items.Clear();
string   ConnectionString= "Data   Source=test;user=test;password=test; ";  
OracleConnection   conn=new   OracleConnection(ConnectionString);  
try
{
conn.Open();
string   cmdString= "select   *   from test_table ";
OracleCommand   cmd=new   OracleCommand(cmdString,conn);
OracleDataReader   dr=cmd.ExecuteReader();
while(dr.Read())
{
                //设置listview的基本样式

                                                      this.listView1.GridLines=true;
this.listView1.FullRowSelect=true;
this.listView1.View=View.Details;
this.listView1.Enabled=true;
this.listView1.Scrollable=true;
this.listView1.MultiSelect=false;
this.listView1.HeaderStyle=ColumnHeaderStyle.Clickable;

                                                //读出数据来,   自动生成列标头

                                                for(int i=0;i <dr.FieldCount;i++)
{
//读出数据来,   自动生成列标头
ColumnHeader   ch=new   ColumnHeader();
ch.Text=dr.GetName(i).ToString();
this.listView1.Columns.Add(ch);
//循环显示列
ListViewItem   lvi=new   ListViewItem();
lvi.SubItems[i].Text=dr.GetValue(i).ToString();
this.listView1.Items.Add(lvi);
}

}
dr.Close();
MessageBox.Show( "成功显示信息! ");
}
catch
{
MessageBox.Show( "打开数据库失败! ", "提示! ",MessageBoxButtons.YesNoCancel);
}
finally
{
//关闭connection
conn.Close();
}
}

------解决方案--------------------
好像是ListView设置显示方式的问题:
for(int i=0;i <dr.FieldCount;i++)
{
//读出数据来, 自动生成列标头
ColumnHeader ch=new ColumnHeader();
ch.Text=dr.GetName(i).ToString();
this.listView1 .Columns.Add(ch);
//循环显示列
ListViewItem lvi=new ListViewItem();
lvi.SubItems[i].Text=dr.GetValue(i).ToString();
this.listView1.Items.Add(lvi);
}
添加列和显示行放在一起?能行吗?表示怀疑
------解决方案--------------------

关于你的问题,有几个方面
1、动态添加列和添加行放在同一个循环是不妥的
应该是先初始化所有列,然后便利所有行,各自一个循环
2、你查询的这个表,字段是否都是字符型或可以转成字符型
如果不是,比如Image等,使用你的GetValue(i).ToString()就可能报错
------解决方案--------------------
如果都加在一起应该做个双循环,加一列,然后subitems也应该加一列吧?
------解决方案--------------------
http://community.csdn.net/Expert/topic/5741/5741947.xml?temp=.2248346