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

时间:2014-11-12 06:43:24

标签: c# jquery asp.net

我用usedgridView来更新和删除数据。但是我得到了

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

3 个答案:

答案 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。

更新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);

答案 2 :(得分:0)

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