protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
GridViewRow row = GridView1.Rows[e.RowIndex];
string Area = ((TextBox)row.FindControl("TextBox1")).Text.ToString(); 这句报错
string family = ((TextBox)row.FindControl("TextBox2")).Text.ToString();
}
{
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
GridViewRow row = GridView1.Rows[e.RowIndex];
string Area = ((TextBox)row.FindControl("TextBox1")).Text.ToString(); 这句报错
string family = ((TextBox)row.FindControl("TextBox2")).Text.ToString();
}
DataKeyNames="sid" onrowcommand="GridView1_RowCommand"
onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating">
<Columns>
<asp:BoundField DataField="StreetName" HeaderText="街道名称" ReadOnly="True" />
<asp:TemplateField HeaderText="总面积">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Area") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Area") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总户数">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("family") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("family") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
</Columns>
</asp:GridView>
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index源错误:
行 391: GridViewRow row = GridView1.Rows[e.RowIndex];
行 392:
行 393: string Area = ((TextBox)row.FindControl("TextBox1")).Text.ToString();
行 394: string family = ((TextBox)row.FindControl("TextBox2")).Text.ToString();
行 395: manage.StreetMappingUpdate(id, Area, family);
还有GridView1.Rows.Count是多少
参考完整的例子
http://dotnet.aspx.cc/file/Add-Delete-Update-Edit-Data-With-Paging-in-GridView.aspx你的代码只有片段,无法更进一步查看
添加列项,定位到单元格
------------------------
.Cells[index].FindControl
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
}
让GridView处在编辑的状态,因为你的TextBox是在编辑模板中
应该是这句没有取到对象
string Area = ((TextBox)row.cells[第几个单元格].FindControl("TextBox1")).Text.ToString();
试一试
建议调试一下看看row对不对。