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