LINQデータソースを使用しているGridViewがあります。私のPage_Loadで、私はASP.NET GridViewのボタンで「インデックスが範囲外です」エラー
Using rah As New LinqDataContext(LinqConnectionString)
GridView1.DataSource = From l In rah.Links _
Where l.CategoryID = CategoryDropDown.SelectedValue _
Order By l.Name _
Select l.LinkID, _
l.Name, _
l.URL, _
l.Comment, _
l.QuickLink
GridView1.DataBind()
End Using
をやっているこれまでのところ、正常に動作しているように見えます、と私はページを実行したときにGridViewに現れてレコードを表示することができます。
のGridViewの各行は、最後の列の削除]ボタンがあります。
<asp:ButtonField ButtonType="Button" CommandName="del" Text="Delete Link" />
(私もASPを試してみました:TemplateFieldとItemTemplateにあるボタン)を
私の問題はボタンであり、それは、イベントハンドラ内のコードの最初の行に失敗し、クリックされた:
Private Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand
Dim ID As String = GridView1.DataKeys(e.CommandArgument).Value.ToString
エラーはインデックスが範囲外だった」である非負とcollecのサイズよりも小さくなければなりません。何らかの理由で行インデックスを適切に渡していません。次のように
私のGridViewのコードは次のとおりです。
<asp:GridView CssClass="Grid" ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="LinkID" CellPadding="5">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%#: Bind("Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="URL">
<ItemTemplate>
<asp:HyperLink ID="hyperURL" runat="server" Text='<%#: Bind("URL")%>' NavigateUrl='<%# "../GoToURL.aspx?url=" & Server.UrlEncode(Eval("URL"))%>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comment">
<ItemTemplate>
<asp:Label ID="lblComment" runat="server" Text='<%#: Bind("Comment")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quick Link">
<ItemTemplate>
<asp:Label ID="lblQuickLink" runat="server" Text='<%# Bind("QuickLink")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" CommandName="del" Text="Delete Link" />
</Columns>
</asp:GridView>
ヘルプは感謝します!
おそらく、_gridViewCommandEventArgs_ rightを意味しますか? – Steve
はい、申し訳ありませんが、私がここに投稿したときの間違いでした。 "e AS GridView ..."と言わなければなりません。 – user3173098
私が掲示したときには、それはタイプミスでした。私はまだ私の実際の問題を解決していません – user3173098