GridView控件的数据绑定问题

am2004 2007-08-22 09:59:39
1、页面加载时我构造一个数据表(仅有一行数据),并作为数据源绑定到GridView
//数据初始化
private void InitVal()
{
//构造演示数据
DataTable dt = new DataTable();

DataColumn dc0 = new DataColumn("Q1");
DataColumn dc1 = new DataColumn("Q2");
DataColumn dc2 = new DataColumn("Q3");

dt.Columns.Add(dc0);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);

DataRow dr = dt.NewRow();
dr[0] = "1";
dr[1] = "请求权";
dr[2] = "小行星。";

dt.Rows.Add(dr);

this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
2、点击页面上的查询按钮,访问数据库并获取一个数据源绑定到GridView,页面能正常显示数据源中的记录
//按钮:查询
protected void ibQuery_Click(object sender, ImageClickEventArgs e)
{
DataSet ds = rQues.GetQues(eQues);
if (ds.Tables[0].Rows.Count == 0)
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());

this.GridView1.DataSource = null;
this.GridView1.DataBind();
this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();
}
3、问题:新数据源有多于一行的记录,当我选择第2行及后面的行,执行到GridView1.Rows[GridView1.SelectedIndex]时报索引超出范围的错误,跟踪GridView1.Rows.Count=1(最初第一次绑定时的数据行数),请高手解惑?
//源代码如下
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int i = GridView1.SelectedIndex;
GridViewRow row = GridView1.Rows[i];//此处出错,

Session["Q1"] = row.Cells[0].Text;
Session["Q2"] = row.Cells[1].Text;
Session["Q3"] = row.Cells[2].Text;

Response.Redirect("QuesEdit.aspx");
}
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojekleen 2007-08-30
  • 打赏
  • 举报
回复
2楼的即可,按钮事件会触会page_load()事件的。
调试下就可看的出来是什么错误
jetxia 2007-08-24
  • 打赏
  • 举报
回复
InitVal这个要放到 if(!this.IsPostBack)里
Cherish20 2007-08-24
  • 打赏
  • 举报
回复
在给GRIDVIEW指引数据源时,应该动态加载GRIDVIEW的列数的。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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