当我点击gridview中的“编辑”按钮时,如何调用“删除行”事件? asp.net C#

时间:2016-04-15 12:17:17

标签: c# asp.net gridview

我有一个gridview我希望当我点击gridview中的“编辑”按钮然后编辑插入在gridview之外的控件中的行值然后删除行。我可以在“编辑”事件中调用“删除”事件方法,因为我想首先检索控件中的值,然后删除行。

这是我的aspx.cs代码。这里删除和编辑事件代码:

protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    DataTable t = (DataTable)Session["MyDataTable"];
    t.Rows.RemoveAt(e.RowIndex);
    GridView2.DataSource = t;
    GridView2.DataBind();
}

public void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
    DataTable t = (DataTable)Session["MyDataTable"];
    TextBox1.Text=GridView2.Rows[e.NewEditIndex].Cells[1].Text.ToString();

    DropDownList1.Text = GridView2.Rows[e.NewEditIndex].Cells[2].Text.ToString();
    GridView2.EditIndex = -1;
    GridView2.DataSource = t;
    GridView2.DataBind();

    //CAN I CALL GRIDVIEW_ROW_DELETING method here? I try but problem is arguments etc
}

2 个答案:

答案 0 :(得分:2)

正如Emanuaele所说,有更好的方法可以做到这一点,但是如果你想让你的代码接近你所拥有的代码,请将你的删除代码移到一个单独的方法中

protected void DeletingRow(int rowIndex)
{
    DataTable t = (DataTable)Session["MyDataTable"];
    t.Rows.RemoveAt(rowIndex);
    GridView2.DataSource = t;
    GridView2.DataBind();
}

然后GridView2_RowDeleting将更改为

protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    DeletingRow(e.RowIndex);
}

并且GridView2_RowEditing将更改为

public void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
    DaTable t = (DataTable)Session["MyDataTable"];
    TextBox1.Text=GridView2.Rows[e.NewEditIndex].Cells[1].Text.ToString();
    DropDownList1.Text =   GridView2.Rows[e.NewEditIndex].Cells[2].Text.ToString();
    GridView2.EditIndex = -1;
    GridView2.DataSource = t;
    GridView2.DataBind();
    //CAN I CALL HERE GRIDVIEW_ROW_DELETING METHOD,I try but problem is arguemnts etc

    DeletingRow(e.NewEditIndex);
}

答案 1 :(得分:0)

如果数据来自数据库,则方法错误。 你必须处理数据,而不是页面控制(你可以,但最好不要这样做。)

不要使用Session来存储Datatable(有多少条记录?)

使用按钮的CommandArgument获取记录的ID。 从数据库中检索记录并在控件中存储字段。单击按钮,保存数据,删除记录并重新绑定。

使用您的方法,您可以在私有方法中移动删除事件的代码,并从编辑事件

中调用它