2012-02-14 10 views
1

私は現在ゲストブックシステムを開発しており、特定のログを削除するには管理者が必要です。問題は、削除しようとするとエラーが発生することです。c#Datalist特定の行を削除します。

エラーは次のとおりです。Index was outside the range. It may not be negative and must be less than the crowd size. Parameter name: index

マイコード:asp.net

<asp:DataList ID="guestBookDataList" runat="server" ondeletecommand="guestBookDataList_DeleteCommand"> 
    <ItemTemplate> 
     <div id="guest-books"> 
      <span class="guestBook-Id"> # <%#DataBinder.Eval(Container.DataItem, "id") %></span><span class="guestBook-Name">Name: <%#DataBinder.Eval(Container.DataItem, "Name") %> </span> 
      <span class="guestBook-Date"> Date: <%#DataBinder.Eval(Container.DataItem, "Date") %> </span> <br /> 
      <span class="guestBook-Text"> <%#DataBinder.Eval(Container.DataItem, "text") %> </span> 
      <asp:LinkButton ID="LinkButtonDelete" CssClass="gastbok-remove" runat="server" CommandName="Delete">Delete<%#DataBinder.Eval(Container.DataItem, "id") %></asp:LinkButton> 
     </div>     
    </ItemTemplate> 
</asp:DataList> 

私のLinkBut​​tonコントロールがデータリスト内の各アイテムの削除ボタンです。

、私にエラーを与えている私のC#コード:私はちょうど私がそれを削除することができますので、databseからguestbooklogsのIDをretriveする必要が

protected void guestBookDataList_DeleteCommand(
    object source, DataListCommandEventArgs e) 
{ 
    int id = Convert.ToInt32(guestBookDataList.DataKeys[e.Item.ItemIndex]); 
    db.deleteGeustBookLog(id); //calls the sql command 
    bindList(); 
} 

Basiclly。

さまざまな方法を試してみましたが、これについてはGoogleで検索しましたが、うまく機能しません。だから私はあなたに依頼しています。御時間ありがとうございます。

答えて

2

IDを持つLinkBut​​tonにCommandArgumentを追加します。次に、削除コードで、e.CommandArgumentを探し、代わりにその値を渡します。

<asp:LinkButton id="LinkButton2" 
     Text="Delete" 
     CommandName="Delete" 
     CommandArgument='<%#DataBinder.Eval(Container.DataItem, "id") %>' 
     OnCommand="DeleteGuestBookEntry" 
     Runat="server"/> 

「DeleteGuestBookEntry」などのcommandNameを指定することもできます。

void DeleteGuestBookEntry(Object sender, CommandEventArgs e) 
    { 
    int id = Convert.ToInt32(e.CommandArgument); 
    db.deleteGeustBookLog(id); //calls the sql command 
    bindList(); 
    } 

私はいつもあなたのIDがnullでないことを確認してください、との数値である、など、およびいくつかのエラー処理を追加し、それがダウンして、それを行うには汚い方法だと思います。 :)

+0

AHHはそんなにありがとう。あなたは私の日を救った:)。それは完全に働いた – dumbel

+0

あなたは答えを受け入れることができますか? –

0

は、あなたが "datakeynames" プロパティを設定する必要があり

<asp:DataList ID="guestBookDataList" runat="server" ondeletecommand="guestBookDataList_DeleteCommand" datakeynames="id"> 
関連する問題