Gridview:从Edit切换到ItemMode,然后再切换到Edit by Code

时间:2016-09-02 19:07:08

标签: c# asp.net gridview

我有一个带有SQLDataSource的Gridview。 LinkBut​​ton的Click事件在DataBase中插入新记录。之后,我希望将Gridview置于编辑模式,并选择新添加的记录/行。我设法做到了:

    protected void AddNewMS(Object sender, EventArgs e)
    {
        SqlConnection objConn = new SqlConnection("Data Source=XXXXX");
        SqlCommand objCommand = new SqlCommand(@"Declare @NewOrderNumber int
                                             Set @NewOrderNumber = (Select TOP 1 OrderNr + 1 from EPC_Milestones ORDER BY OrderNr desc)
                                             Insert into EPC_Milestones (Active, OrderNr) Values (0, @NewOrderNumber)
                                             Select @NewOrderNumber", objConn);
        objConn.Open();
        var query = objCommand.ExecuteScalar();
        objConn.Close();
        int result = 0;
        if (query != null)
        {
            result = Convert.ToInt32(query);
        }
        Gridview1.DataBind();
        Gridview1.EditIndex = -1;
        Gridview1.EditIndex = result - 1;
    }

该行中有一个复选框,如果我之后立即检查它(对象引用未设置为对象的实例),则会给我带来麻烦。但是如果我离开编辑模式。通过单击“取消”并再次返回“编辑”,此检查工作完美。我想将这两个操作转换为代码,因此做Gridview1.EditIndex = -1并再次返回。但它不会工作。如何完全刷新gridview?

1 个答案:

答案 0 :(得分:0)

我很糟糕......一旦你进入编辑模式,我忘了设置保存RowIndex的标签。 Checkbox的OnCheckedChange方法使用该标签“SelectedMSRow”来寻址正确的RowIndex。因此,当我添加新的行/记录时,我必须使该标签适应新的索引号。所以上面代码的最后3行变为:

        int RowIndex = result - 1;
        SelectedMSRow.Text = Convert.ToString(RowIndex);
        Gridview1.DataBind();
        Gridview1.EditIndex = -1;
        Gridview1.EditIndex = RowIndex;

    protected void CheckBoxCustomerRequiredChanged(Object sender, EventArgs e)
    {
        CheckBox CheckedOrNot = Gridview1.Rows[Convert.ToInt32(SelectedMSRow.Text)].FindControl("checkboxCustomerRequiredEdit") as CheckBox;