2013-07-26 97 views
0

我有一個帶有datagridview的粗糙表單。 這裏是我的「刷新」代碼:c#數據綁定修改網格值

private void Recuperar() 
     { 
      DataSet ds = new DataSet(); 
      string CommandText = "SELECT * from sectores order by sector"; 
      SQLiteDataAdapter adapter = new SQLiteDataAdapter(CommandText, Variables.Conexion); 
      DataTable table = new DataTable(); 
      table.TableName = "sectores"; 
      adapter.Fill(table); 

      grilla.DataSource = table; 

      grilla.Refresh(); 
      grilla.Columns["sector_id"].Visible = false; 
      grilla.Columns["clave"].Visible = false; 
      grilla.Columns["sector"].HeaderText = "Sector"; 
      grilla.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 
      SetDataBinding(); 

     } 

private void SetDataBinding() 
     { 
      this.textBoxId.DataBindings.Clear(); 
      this.textBoxId.DataBindings.Add(new System.Windows.Forms.Binding("Text", grilla.DataSource, "sector_id")); 
      this.tbSector.DataBindings.Clear(); 
      this.tbSector.DataBindings.Add(new System.Windows.Forms.Binding("Text", grilla.DataSource, "sector")); 
      this.tbClave1.DataBindings.Clear(); 
      this.tbClave1.DataBindings.Add(new System.Windows.Forms.Binding("Text", grilla.DataSource, "clave")); 
      this.tbClave2.DataBindings.Clear(); 
      this.tbClave2.DataBindings.Add(new System.Windows.Forms.Binding("Text", grilla.DataSource, "clave")); 
     } 

在我的「添加」按鈕的代碼,我清楚我的控件(被綁定到DataGrid控件)的文本,以便用戶插入新的值。

private void btn_agregar_Click(object sender, EventArgs e) 
     { 
      grilla.ClearSelection(); 
      accion = DataRowAction.Add; 
      SetEstado(); 
     } 

private void SetEstado() 
     { 
      if (accion == DataRowAction.Add) 
       btn_guardar.Text = "Agregar"; 
      if (accion == DataRowAction.Change) 
       btn_guardar.Text = "Modificar"; 
      if (accion == DataRowAction.Delete) 
       btn_guardar.Text = "Eliminar"; 
      if (accion == DataRowAction.Nothing) 
       btn_guardar.Text = "Guardar"; 


      groupBoxControles.Enabled = accion == DataRowAction.Add || accion == DataRowAction.Change; 
      PanelDerechaBotones.Enabled = accion != DataRowAction.Nothing; 
      panelAbajo.Enabled = accion == DataRowAction.Nothing; 
      grilla.Enabled = accion == DataRowAction.Nothing; 


      if (accion == DataRowAction.Add) 
      { 
       textBoxId.Text = "0"; 
       tbSector.Text = ""; 
       tbClave1.Text = ""; 
       tbClave2.Text = ""; 
      } 

      if (accion == DataRowAction.Add || accion == DataRowAction.Change) 
      { 
       tbSector.Focus(); 
      } 

     } 

問題是,當用戶取消此操作時,網格中選定的行現在看起來全部爲空。 (將空值從控件移動到網格)

我知道我錯過了一些東西,但不知道是什麼。 感謝有人幫助我。

取消按鈕代碼

private void btn_cancelar_Click(object sender, EventArgs e) 
     { 
      accion = DataRowAction.Nothing; 
      SetEstado(); 
      //((DataTable)grilla.DataSource).RejectChanges(); 
     } 

回答

0

我假設了取消按鈕的回發,你是不是重新綁定?網格必須在每次回傳後反彈。

+0

我添加了取消按鈕代碼 –

+0

我嘗試重新綁定後取消按鈕,但沒有工作 –

+0

最後我解決了它與一個簡單的grid.Refresh()後拒絕更改數據集。不管怎麼說,還是要謝謝你 –