System.ArgumentOutOfRangeException: 索引超出范围

icecsdn 2009-03-19 08:35:48
代码如下:老是设置列名的时候出错,怎么回事啊,也没找到什么好的解决办法,郁闷,有的说把设置列名哪句放到绑定之前,我放了,如下,还是不行 请帮忙解决一下,谢了
SqlDataAdapter da = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
try
{
da.Fill(ds,"t");
this.DataGrid1.DataSource = ds.Tables["t"];
this.DataGrid1.Columns[0].HeaderText = "aaa";
this.DataGrid1.DataBind();
}


错误是System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index 在 System.Collections.ArrayList.get_Item(Int32 index) 在 System.Web.UI.WebControls.DataGridColumnCollection.get_Item(Int32 index) 在 GradeMis.AdminGrade.GetData
...全文
1836 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ai2015WER 2011-08-01
  • 打赏
  • 举报
回复
今天做Silverlight的时候也是这个报错。做个判断是否为NULL就行了
wangping_li 2009-03-20
  • 打赏
  • 举报
回复

放在this.DataGrid1.DataBind();之后
加上判断:
if(DataGrid1.Columns.Count>0)
this.DataGrid1.Columns[0].HeaderText = "aaa";
如果你的数据集返回为null的话,没有列你设第0列肯定报错了
ireenter 2009-03-20
  • 打赏
  • 举报
回复
ds==null了,结果集没有取回来。
春天的气息 2009-03-19
  • 打赏
  • 举报
回复
首先确定你的记录集是否有内容,是否生成了记录集。

Fill时,写上默认表, default,2楼已说了。


------------------------------------------
欢迎加入我的程序设计QQ群80532706哟
请注册bbs.bbs180.com,并写清把ID号,然后加入群。
goonfighting 2009-03-19
  • 打赏
  • 举报
回复
超出数组的最大值了。
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
好的吧,实在不行我试试,我还有另一种解决的办法,就是在SQL语句中用AS成别名,但不是最理想的方法
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
应该不大
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
是 WEB ,改用gridview的话,改动大吗,我怕改动太多。。
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
要是winform就datagridview
要是web 就gridview
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
呵呵,换哪个,我还不太熟悉
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
现在都不用datagrid了啊。。。
要不换一个?
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
TO:xiaoswHot 不行,还是错的
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
TOhjx398 谢谢,
我的是datagrid,不是gridview1。
hansmile1 2009-03-19
  • 打赏
  • 举报
回复
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2,
this.Column3});
this.Column1.HeaderText = "aaaaaa";
this.Column1.Name = "Column1";
hjx398 2009-03-19
  • 打赏
  • 举报
回复
this.GridView1.HeaderRow.Cells[0].Text = "hjx";
wensen1232 2009-03-19
  • 打赏
  • 举报
回复
为什么我老是找不到那个DataBind的方法呢?
我的是VS2005
觉得你应该把这个方法放到你设置的HeadText的前面去,因为在绑定之前控件里面应该什么都没有。也就不存在第一列的问题所以就会越界
新手,不知道说的对不对!
xyxx 2009-03-19
  • 打赏
  • 举报
回复
想知道,顶!
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
谁能帮解决一下啊,应该不是很难那
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
我就奇怪了Columns[0]就是第一列为什么说越界呢
icecsdn 2009-03-19
  • 打赏
  • 举报
回复
那如果我做循环写列名怎么办?你这样好像不是很灵活呀
加载更多回复(8)

111,089

社区成员

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

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

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