1

セルの値を gridView に到達させたいのですが、「インデックスが範囲外でした」というエラーが表示されます。負ではなく、コレクションのサイズより小さくなければなりません。グリッド行コマンド'

誰か助けてくれませんか?

 <asp:GridView ID="grdList" runat="server" AutoGenerateColumns="False"  GridLines="None"
            PageSize="5" AllowPaging="True" OnPageIndexChanging="Grd_Allergys_PageIndexChanging"
            OnRowCommand="grdList_RowCommand" OnRowDeleting="grdList_RowDeleting" OnRowEditing="grdList_RowEditing">
            <Columns>
                <asp:BoundField DataField="LangId" HeaderText="LangId" />
                <asp:BoundField DataField="LangName" HeaderText="LangName" />
                <asp:TemplateField HeaderText="Edit">
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnEdit" runat="server" CommandName="Edit" CommandArgument='<%#Eval("LangId") %>'
                            ImageUrl="~/Image/edit.jpg" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Delete">
                    <ItemTemplate>
                        <asp:ImageButton ID="imgBtnDelete" runat="server" CommandName="Delete" CommandArgument='<%#Eval("LangId")%>'
                            ImageUrl="~/Image/delete_icon.gif" OnClientClick="return confirm('Do you want to continue ?')" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <PagerSettings Mode="Numeric" />
        </asp:GridView>

 protected void grdList_RowCommand(object sender, GridViewCommandEventArgs e)
 {
        DBDataContext dc = new DBDataContext();

        if (e.CommandName == "Edit")
        {                       
           int rowIndex = int.Parse(e.CommandArgument.ToString());
           string LangName = grdList.DataKeys[rowIndex]["LangName"].ToString();                              
        }                    
 }
4

4 に答える 4

2

コマンド引数の行として割り当てLangIdて想定しています。indexid が行数より大きい場合は、範囲外にする必要がありますindex

変化する

CommandArgument='<%#Eval("LangId")%>'

CommandArgument='<%# ((GridViewRow) Container).RowIndex %>'
于 2013-04-01T12:29:37.237 に答える
0

コマンド引数=<%# Container.DisplayIndex %>

于 2015-07-09T06:27:55.733 に答える
0

あなたも設定DataKeys していません。

DataKeys="LangName"GridView 定義に追加します。

于 2013-04-01T13:05:57.740 に答える