求解:invalidargument = value '1' is not valid for 'index'

ellaxy 2011-07-17 04:02:10
Visual studio 2010 c#,程序中按refresh键让 treeview 控件显示数据库表的两个值,但只显示第一个type的值,到第二个值时catch出现标题中的错误信息,代码如下
private void btRefresh_Click(object sender, EventArgs e)
{


//start put sqldata into list view
try
{

SqlConnection sc = new SqlConnection();//create SQL connection object
sc.ConnectionString = strConn;//
sc.Open();//Open connection

//To store SQL Select command
string tempCommand = "select Types,RootVer from VerControl";
SqlCommand sd = new SqlCommand(tempCommand, sc);
SqlDataReader sdr = sd.ExecuteReader();
lvFile.Items.Clear();
while (sdr.Read())//if have data from VerControl
{
//set properties of list view
lvFile.View = View.Details;
lvFile.FullRowSelect = true;
lvFile.GridLines = true;
this.lvFile.Scrollable = true;
this.lvFile.MultiSelect = false;
this.lvFile.HeaderStyle = ColumnHeaderStyle.Clickable;

for (int i = 0; i < sdr.FieldCount; i++)
{
//读出数据来, 自动生成列标头
ColumnHeader ch = new ColumnHeader();
ch.Text = sdr.GetName(i).ToString();
this.lvFile.Columns.Add(ch);
//循环显示列
ListViewItem lvi = new ListViewItem();
MessageBox.Show(sdr.GetValue(i).ToString());//检查从数据库取值,两个字段都取到值
lvi.SubItems[i].Text = sdr.GetValue(i).ToString();//catch显示这行出错
this.lvFile.Items.Add(lvi);
}
lvFile.Show();
if (lvFile.Items.Count == 0)
{
MessageBox.Show("List View is Empty!");
}

}
sdr.Close();

}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

}
...全文
305 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ellaxy 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhaoyycit 的回复:]

lvi.SubItems[i].Text 的问题?
[/Quote]
是的,就是lvi.SubItems[i].text这个i赋什么值都不行,不管是0还是1
ellaxy 2011-07-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]

用到索引了?把索引先去掉再试试
[/Quote]

能说的详细点吗?如何不用索引添加?
zhaoyycit 2011-07-18
  • 打赏
  • 举报
回复
lvi.SubItems[i].Text 的问题?
我姓区不姓区 2011-07-18
  • 打赏
  • 举报
回复
用到索引了?把索引先去掉再试试
ellaxy 2011-07-18
  • 打赏
  • 举报
回复
按照1楼的改后,还是出现同样的错误,指示在lv.Subitems[i].Text = sdr[i].ToString
threenewbee 2011-07-17
  • 打赏
  • 举报
回复
for (int i = 0; i < sdr.FieldCount; i++)
{
//读出数据来, 自动生成列标头
ColumnHeader ch = new ColumnHeader();
ch.Text = sdr.GetName(i).ToString();
this.lvFile.Columns.Add(ch);
//循环显示列
ListViewItem lvi = new ListViewItem();
MessageBox.Show(sdr.GetValue(i).ToString());//检查从数据库取值,两个字段都取到值
lvi.SubItems[i].Text = sdr.GetValue(i).ToString();//catch显示这行出错
this.lvFile.Items.Add(lvi);
}

=>

for (int i = 0; i < sdr.FieldCount; i++)
{
//读出数据来, 自动生成列标头
ColumnHeader ch = new ColumnHeader();
ch.Text = sdr.GetName(i).ToString();
this.lvFile.Columns.Add(ch);
}
while (sdr.read())
{
for (int i = 0; i < sdr.FieldCount; i++)
{
//循环显示列
ListViewItem lvi = new ListViewItem();
MessageBox.Show(sdr.GetValue(i).ToString());//检查从数据库取值,两个字段都取到值
lvi.SubItems[i].Text = sdr[i].ToString();//catch显示这行出错
this.lvFile.Items.Add(lvi);
}
}

111,097

社区成员

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

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

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