请能有人真正告诉我有什么不对的代码,我有这样的错误:请问这是什么原因导致“索引超出范围必须是非负的...错误”?
System.ArgumentOutOfRangeException was caught
Message=Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
int index = Int32.Parse(e.CommandArgument.ToString());
long Id = long.Parse(gvGrid.DataKeys[index][0].ToString());
var stuobj = ctx.stockUnits.SingleOrDefault(st => st.ID == Id);
if (stuobj != null)
this.txtStockUnit.Text = stuobj.NAME;
ViewState["Id"] = Id;
在标记(设计源)这是我有:
<asp:GridView ID="gvGrid" runat="server"
OnPageIndexChanging = "gvGrid_PageIndexChanging" AutoGenerateColumns="False"
BackColor="White" CssClass = "mGrid" DataKeyNames ="Id,NAME"
OnRowCommand="gvGrid_RowCommand"
...<Columns>
<asp:BoundField DataField="NAME" HeaderText="STOCK UNIT NAME" HeaderStyle-CssClass="Headerhodder"
FooterStyle-CssClass="Headerhodder" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left"
ItemStyle-VerticalAlign="Middle" />
<asp:TemplateField HeaderStyle-CssClass="Headerhodder" FooterStyle-CssClass="Headerhodder"
ItemStyle-HorizontalAlign="Center" ItemStyle-Width="50px"
ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<asp:ImageButton ID="imgEdit" runat="server" ImageUrl="~/img/pencil.png" CommandName="EditStockUnit" CommandArgument ='<%# Container.DataItemIndex %> '
AlternateText="Edit Stock Unit" ToolTip="Edit Stock unit record" CausesValidation="false" />
是这里有什么缺失?感谢您的帮助。
感谢骆马。我想我知道我要做什么。我将使用模运算符来每次获取余数,并使用它来代替直接使用索引。我非常感谢您的回复.StackOverflow一直是解决方案的重要来源。祝你有个美好的一天 – Charles 2012-03-13 07:17:35