0

ID に代わってデータリストから画像を削除したいのですが、このコードは機能しません エラー: インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

public void show_top_one()
{
    BusinessLogic b1 = new BusinessLogic();
    string query = "select txt_img_name from tbl_gallery2";
    DataSet ds = b1.GetDataSet(query);
    DataList1.DataSource = ds.Tables[0];
    DataList1.DataBind();
}

protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
    BusinessLogic b1 = new BusinessLogic();
    int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
    string query = "Delete from tbl_gallery2 where id='"+id+"'";
    b1.ExecuteQuery(query);
    show_top_one();

}

}

4

5 に答える 5

2

選択クエリを変更してください。

string query = "select id,txt_img_name from tbl_gallery2";

そして今、DataKeyNameをあなたのデータリストに追加してください

<asp:DataList DataKeyField="id"

したがって、これにより Id 列がデータキーに追加されます。その後、バックエンドでその値を取得できます。

于 2013-10-25T09:32:24.407 に答える
0

まず、この値を確認する必要があります

 DataList1.DataKeys[e.Item.ItemIndex].Value

上記のパラメーターで null 値を取得している可能性があります。はいの場合、data-list に data-key-filed を設定していない可能性があります。

したがって、DataKeyField最初に DataList に を設定してから、コードを使用する必要があります。

于 2013-10-25T09:37:34.100 に答える
0

これを試してください: .Value を逃したと思います。

protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
    BusinessLogic b1 = new BusinessLogic();
    int id = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].Value);
    string query = "Delete from tbl_gallery2 where id='"+id+"'";
    b1.ExecuteQuery(query);
    show_top_one();

}
于 2013-10-25T09:30:38.360 に答える
0

int の場合、単一引用符は必要ありません

 string query = "Delete from tbl_gallery2 where id="+id;

idまた、選択クエリとデータキーで列を選択する必要があります

于 2013-10-25T09:31:46.190 に答える