我用usedgridView来更新和删除数据。但是我得到了
“索引超出范围。必须是非负数且小于集合的大小。 参数名称:索引“更新时出错。
答案 0 :(得分:1)
你的jquery datetimepicker
没有问题问题似乎在:
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>
答案 1 :(得分:0)
我可以看到你正在使用dropdownlist for copy_id所以最好使用下面的代码来查找下拉列表并从中获取值。
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);
如果不起作用,请检查ÁngelDiMaría答案中提到的e.RowIndex。
尝试像这样
获取日期字段 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);
答案 2 :(得分:0)
您似乎正在尝试使用索引读取单元格值,但该位置没有数据元素。建议您在监视窗口中调试和增加集合中的索引值并观察数据