2016-09-02 19 views
0

私はSQLDataSourceを持つGridviewを持っています。 LinkBut​​tonのクリックイベントは、データベースに新しいレコードを挿入します。その後、私はGridviewを編集モードにして、追加された新しいレコード/行を選択します。私はそれを行うために管理:Gridview:EditからItemModeに切り替えてコードで編集する

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; 
    } 

私は(オブジェクト参照オブジェクトのインスタンスに設定されていない)、右後でそれをチェックすると、私に迷惑を与えるその行のチェックボックスがあります。しかし、私が編集モードを離れる場合。 「キャンセル」をクリックしてもう一度「編集」に戻ると、このチェックは完全に機能します。私はこれら2つの操作をコードに変換したいので、Gridview1.EditIndex = -1を実行してもう一度やり直してみました。しかし、それは動作しません。グリッドビューを完全に更新するにはどうすればよいですか?

答えて

0

私は悪い...編集モードに入ると、RowIndexを保存するラベルを設定するのを忘れました。そのチェックボックスの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; 
関連する問題