更新网格视图值asp.net时出错

本文关键字:net 出错 asp 网格 视图 更新 | 更新日期: 2023-09-27 18:30:14

我已经使用gridView来更新和删除数据。但我得到

"索引超出范围。必须是非负数并且小于集合的大小。参数名称:index"更新时出错。

更新网格视图值asp.net时出错

您的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);

您似乎正在尝试使用索引读取单元格值,但该位置没有数据元素。建议您在观察窗口中调试并增加集合中的索引值,并观察数据