0

からプログラムで削除しようとしていGridViewます。

グリッドビューのイベント ハンドラーを実装しましたOnRowDeleting="Delete_Record"。これは、ユーザーが GridView の削除リンクをクリックしたときに呼び出されますが、行が選択されていないように見えるため、削除を行うコードは機能しません。

さらにテストするには、[選択] をクリックして行を選択し (選択の背後にあるコードをコメントアウト)、[削除] をクリックすると、コードは正常に実行されます。

の最初のステップとして行を選択する方法はありDelete_Recordますか?

GridViewRow row = gvResults.SelectedRow;
string id = row.Cells[1].Text;

ASB_DataDataContext db = new ASB_DataDataContext();
var delCase = from dc in db.Inputts
              where dc.counter == Convert.ToInt32(id)
              select dc;

foreach (var nCase in delCase)
{
    db.Inputts.DeleteOnSubmit(nCase);
    db.SubmitChanges();
}
4

3 に答える 3

2

イベントを使用しているので、必要なインデックスをの一部として持つ必要がありGridViewDeleteEventArgs eます。e.RowIndex

その後、必要なパラメーターに次のようにアクセスできますgrid.Rows[e.RowIndex].Cells[1].Text

于 2012-08-23T09:26:26.657 に答える
0

以下に示すコードで達成できます

public void GridView1_Delete_Record (Object sender, GridViewDeleteEventArgs e)
{
    string id = gridView1.Rows[e.RowIndex].Cells[2].Text;

    ASB_DataDataContext db = new ASB_DataDataContext();
    var delCase = from dc in db.Inputts
              where dc.counter == Convert.ToInt32(id)
              select dc;

    foreach (var nCase in delCase)
    {
       db.Inputts.DeleteOnSubmit(nCase);
       db.SubmitChanges();
    }  Message.Text = "";
}  
于 2012-08-23T09:34:39.443 に答える
0

db.Inputtsデータグリッドの DataSource として設定します。コードの後に​​次の 2 行を追加するだけです。

datagridView1.DataSource = null;
datagridView1.DataSource = db.Inputts;

datasource を null に設定すると、以前のデータがデータグリッドから消去されます。

于 2012-08-23T09:37:30.347 に答える