我有一个带有SQLDataSource的Gridview。 LinkButton的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?
答案 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;