用户控件的第二次单击时不会触发按钮单击事件

时间:2013-04-01 05:20:45

标签: asp.net user-controls

大家好我已经创建了一个用户控件,每个按钮上都会有3个按钮,每次按下按钮我都会根据按钮点击动态分配一个网格,但值很少。一切正常,但是当我从gridview中删除一行并再次执行按钮点击事件时,它不会触发按钮点击事件

我在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();
}

删除行后如何执行按钮单击操作以再次触发

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

删除后使用此代码

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

还有一件事当最终用户点击删除命令或调用DeleteRow方法时,会发生RowDeleting事件。要取消删除操作,请将事件参数的Cancel属性设置为true。

e.cancel=true; //in finally

请参阅reference