1

こんにちは、すべてのボタンのクリックごとに 3 つのボタンを持つユーザー コントロールを作成しました。ボタンのクリックに基づいて、値の少ないグリッドを動的に割り当てます。すべて正常に動作しますが、グリッドビューから行を削除してボタンクリックイベントを再度実行すると、ボタンクリックイベントが発生しません

私のコードUser control

DataTable dt= new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
  if (ViewState["CurrentTable"] == null)
  {
     dt.Columns.Add("Id", typeof(string));
     dt.Columns.Add("xx", typeof(string));
     dt.Columns.Add("xx", typeof(string));
     dt.Columns.Add("xx", typeof(string));
     dt.Columns.Add("xx", typeof(string));
  }
   }

protected void btn1_Click(object sender, EventArgs e)
{
  if (ViewState["CurrentTable"] == null)
  {
  }
  else
  {
      addrow("Some", txt1.Text);
  } 
}

protected void grd_Deleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
       int iIndex;
        iIndex = grd.FocusedRowIndex;
        dt.Rows[iIndex].Delete();
        grd.DataSource = dt;
        grd.DataBind();
}

行を削除した後に再起動するボタンクリック操作を実行するにはどうすればよいですか

4

2 に答える 2

0

問題はにあると思いますgrd_Deleting

で新しい値を(削除後に)設定している場所がわかりませんview-state

protected void grd_Deleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
   int iIndex;
    iIndex = grd.FocusedRowIndex;
    dt.Rows[iIndex].Delete();
    //set dt to view state
    ViewState["CurrentTable"] =dt;
    grd.DataSource = dt;
    grd.DataBind();
}
于 2013-04-01T05:42:48.227 に答える
0

削除後にこのコードを使用してください

ViewState["CurrentTable"] = dt // OR Null base on your requirement
btn1_Click(null, null);

もう 1 つ、RowDeleting イベントは、エンドユーザーが Delete コマンドをクリックするか、DeleteRow メソッドが呼び出されたときに発生します。削除操作をキャンセルするには、イベント パラメータの Cancel プロパティを true に設定します。

e.cancel=true; //in finally

参照を参照してください

于 2013-04-01T05:46:34.673 に答える