2017-03-02 4 views
0

Im totaly neu speichern zu Codierung aber im Versuch :) Bei der Anwendung Im arbeite ich lernen müssen, eine Schaltfläche, um eine neue ZeileHowto bearbeiten ausgewählte Zeilen, sondern als neue Zeile (textBox, Datagridview, SQL)

fügt
Edit(true); 
dbDocSet.DocData.AddDocDataRow(dbDocSet.DocData.NewDocDataRow()); 
docDataBindingSource.MoveLast(); 

und dann mit einem anderen Knopf von Textbox I speichern

Edit(false); 
docDataBindingSource.EndEdit(); 
docDataTableAdapter.Update(dbDocSet.DocData); 
dataGridView1.Refresh(); 

ich kann auch eine Reihe bearbeiten

Edit(true); 

Wie kann ich eine Zeile bearbeiten, aber nach der Bearbeitung in einer neuen Zeile speichern, anstatt sie zu überschreiben?

Oder vielleicht shold ich es ändern, wie dies funktioniert:

Statt - Hinzufügen neue Zeile mit Schaltfläche Neu - Füllen Sie Textfelder - Sparen mit Savebutton

wie folgt tun: - Füllen in area per - speichern, um neue Zeile mit Savebutton

Edit: - area per Bestücken durch eine Reihe Auswahl - Nehmen Sie Änderungen in area perZu den gleichen Zeile mit changebutton enter image description here

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Rectangle resolutionRect = System.Windows.Forms.Screen.FromControl(this).Bounds; 
     if (this.Width >= resolutionRect.Width || this.Height >= resolutionRect.Height) 
     { 
      this.WindowState = FormWindowState.Maximized; 
     } 
     this.docDataTableAdapter.Fill(this.dbDocSet.DocData); 
     Edit(false); 
    } 

    private void Edit(bool value) 
    { 
     textBox1.Enabled = value; 
     textBox2.Enabled = value; 
     textBox3.Enabled = value; 

Und dann mehr textBox.Enable = Wert (143 st)

private void button1_Click(object sender, EventArgs e) 
    { //-----Nytt dokument----- 
     try 
     { 
      Edit(true); 
      dbDocSet.DocData.AddDocDataRow(dbDocSet.DocData.NewDocDataRow()); 
      docDataBindingSource.MoveLast(); 
      textBox1.Focus(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      dbDocSet.DocData.RejectChanges(); 
     } 

     for (int i = 0; i < dataGridView1.RowCount - 1; i++) 

     { 
      if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "" || dataGridView1.Rows[i].Cells[1].Value.ToString() == "") 

      { 

       dataGridView1.Rows.RemoveAt(i); 
       i--; 
      } 
     } 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { //-----Öppna upp för att kunna ändra----- 
     Edit(true); 
     textBox1.Focus(); 
    } 

    private void button4_Click(object sender, EventArgs e) 
    { //-----Avbryt ifyllnad dokument----- 
     Edit(false); 
     docDataBindingSource.ResetBindings(false); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { //-----Spara dokument----- 
     if (string.IsNullOrWhiteSpace(textBox1.Text)) 
     { 
      MessageBox.Show("Dokumenttyp måste anges !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      textBox1.Focus(); 
     } 
     else 
     if (string.IsNullOrWhiteSpace(textBox2.Text)) 
     { 
      MessageBox.Show("Dokumentnamn måste anges !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      textBox2.Focus(); 
     } 
     else 
     if (string.IsNullOrWhiteSpace(textBox3.Text)) 
     { 
      MessageBox.Show("Revision för dokumentet måste anges !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      textBox3.Focus(); 
     } 
     else 
     try 
     { 
      Edit(false); 
      docDataBindingSource.EndEdit(); 
      docDataTableAdapter.Update(dbDocSet.DocData); 
      dataGridView1.Refresh(); 
      textBox1.Focus(); 
      MessageBox.Show("Dokument sparat med lyckat resultat !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      dbDocSet.DocData.RejectChanges(); 
     } 
    } 

    private void dataGridView1_KeyDown_1(object sender, KeyEventArgs e) 
    { //-----Ta bort valt dokument----- 
     if (e.KeyCode == Keys.Delete) 
      foreach (DataGridViewCell oneCell in dataGridView1.SelectedCells) 
      { 
       if (oneCell.Selected) 
        if (MessageBox.Show("Är du säker på att du vill ta bort dokumentet ?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
         dataGridView1.Rows.RemoveAt(oneCell.RowIndex); 
      } 
    } 

Antwort

0

Versuchen Sie es mit dataGridView1_CellValidating - -LINK. Es tritt auf, wenn eine Zelle den Eingabefokus verliert und die Inhaltsvalidierung aktiviert wird. Wenn Sie also überprüfen, ob Sie eine neue Zeile hinzufügen möchten, anstatt die aktuelle Zeile zu bearbeiten, müssen Sie nur die aktuellen Werte aus der Zeile abrufen und zum Hinzufügen einer neuen Zeile verwenden. Am Ende der Überprüfung wird die Zeilenbearbeitung mit e.Cancel abgebrochen.

Wenn Sie Daten von einer Zeile in Textfelder kopieren möchten, nehmen Sie Änderungen in den Textfeldern vor und dann mit der Schaltfläche zum Hinzufügen einer neuen Zeile können Sie dataGridView1_CellClick - verwenden. Wenn Sie also auf Zelle klicken, erhalten Sie die row index of that cell, und dann können Sie auf jede Zelle dieser Zeile zugreifen. Damit füllen Sie Textfelder, nehmen einige Änderungen vor und fügen Sie einfach eine neue Zeile hinzu.

Wenn Ihre Frage ist, wie auch neue Zeile hinzufügen, die Sie hier beantworten müssen Datagridview: LINK

+0

@TobiasJohansson ich meine Antwort bearbeitet, schauen es – DoLoop

+0

Nun ich verstehe Sie nicht. Könnten Sie bitte Ihr Formular screenshot, damit ich weiß, wie es aussieht. Ich dachte, dass Knöpfe Funktion ist, neue Reihe zu datagridview – DoLoop

+0

@TobiasJohansson hinzuzufügen Ich denke, dass ich aufholen bin, was Sie tun möchten, aber Sie tun es falsch. Mit der Schaltfläche "Ny" muss nur die Textbox aktiviert werden, während Sie bei "Spara" das speichern, was Sie in Textboxen geschrieben und NEW ROW hinzugefügt haben. Und der andere, um den Punkt nicht zu sehen. – DoLoop

Verwandte Themen