更新网格视图值asp.net时出错
本文关键字:net 出错 asp 网格 视图 更新 | 更新日期: 2023-09-27 18:30:14
我已经使用gridView来更新和删除数据。但我得到
"索引超出范围。必须是非负数并且小于集合的大小。参数名称:index"更新时出错。
您的jquery日期时间选择器没有问题
问题似乎在:
GridViewRow row = GridView1.Rows[e.RowIndex];
只需将单独的链接按钮编辑和删除为:
<asp:TemplateField HeaderText="Edit" ItemStyle-Width="150">
<ItemTemplate>
<asp:linkbutton id="lnkEdit" runat="server" CommandName="Edit" Text="Edit"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" ItemStyle-Width="150">
<ItemTemplate>
<asp:linkbutton id="lnkDelete" runat="server" CommandName="Delete" Text="Delete" />
</ItemTemplate>
</asp:TemplateField>
我可以看到你正在使用dropdownlist作为copy_id,所以最好使用下面的代码来查找dropdownlists并从中获取值。
DropDownList lblCopyDdl= (DropDownList )GridView1.Rows[e.RowIndex].FindControl("lblCopyId");
int Copy_Id = Convert.ToInt32(lblCopyDdl.selectedvalue);
建议:如果您对其他字段使用与上述相同的代码来获取值,效果会更好。。
例如
int Borrower_Id = Convert.ToInt32((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtBorrowerId").Text);
更新::
如果不起作用,请检查您的e.RowIndex,如Ángel Di María的回答中所述。
更新2
试着像这个一样获取日期字段
DateTime Date_Borrowed = Convert.ToDateTime((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtDateBorrowed").Text);
和
DateTime Date_Returned= Convert.ToDateTime((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtDateReturned").Text);
您似乎正在尝试使用索引读取单元格值,但该位置没有数据元素。建议您在观察窗口中调试并增加集合中的索引值,并观察数据