【发布时间】:2012-03-16 13:20:05
【问题描述】:
ASP.Net:
<asp:GridView id ="sampleGridView" AutoGenerateEditButton ="True" OnRowEditing ="sampleGridView_RowEditing" OnRowCancelingEdit ="sampleGridView_RowCancelingEdit" OnRowUpdating ="sampleGridView_RowUpdating" runat ="server"></asp:GridView>
代码背后:
public partial class _Default : System.Web.UI.Page
{
private DataTable dt = new DataTable("SampleTable");
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
PopulateGridView();
}
}
private void PopulateGridView()
{
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Desgnation", typeof(string));
dt.Columns.Add("City", typeof(string));
for (int i = 0; i < src.GetLength(0); i++)
{
dt.Rows.Add(src[i, 0], src[i, 1], src[i, 2]);
}
sampleGridView.DataSource = dt;
sampleGridView.DataBind();
}
protected void sampleGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = sampleGridView.Rows[e.RowIndex];
//Response.Write(src[1,0]+" "+ dt.Rows[0][0]);
dt.Rows[row.DataItemIndex]["Name"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
dt.Rows[row.DataItemIndex]["Desgnation"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
dt.Rows[row.DataItemIndex]["City"] = ((TextBox)(row.Cells[3].Controls[0])).Text;
}
}
System.IndexOutOfRangeException: 位置 {Row Number} 处没有行说 2. 是 sampleGridView_RowUpdating 行中的错误
dt.Rows[row.DataItemIndex]["Name"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
我尝试以下代码注释掉上面的错误生成代码
Response.Write(dt.Columns.Count+" "+dt.TableName);
输出是:
0 样本表
为什么不能访问数据表的值?
【问题讨论】:
-
这是一个猜测,因为您的源代码不完整购买您是否记得调用 PopulateGridView 或从诸如回发会话变量之类的东西中获取数据表
-
数据表不是会话变量。它是类的成员变量
标签: c# asp.net gridview datatable