2017-03-02 4 views
0

임 totaly 새로운 저장 I이 새 행노하우 편집 선택한 행하지만 코딩하지만 메신저 임 작업 응용 프로그램에서 : 을 배우려고 노력에 새로운 행 (텍스트 상자, DataGridView를, SQL)

를 추가하는 버튼
Edit(true); 
dbDocSet.DocData.AddDocDataRow(dbDocSet.DocData.NewDocDataRow()); 
docDataBindingSource.MoveLast(); 

후 나는 다른 버튼과 텍스트 상자에서 저장

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

가 나는 또한 행을 편집 할 수 있습니다

Edit(true); 

어떻게 행을 편집 할 수 있습니까? 편집 후 행 편집을 덮어 쓰지 않고 새 행에 저장합니까?

또는, 어쩌면 내가 이런 식으로 일을 변경 놈이야 :

대신 - newbutton 에 새 행을 추가 -에 기입 텍스트 상자를 -

이 좋아하세요 savebutton로 저장 : - 기입 텍스트 상자 에 - savebutton 새로운 행에 저장

편집 : - 행 을 선택하여 텍스트 상자를 채 웁니다 - 텍스트 상자을 변경할 515,는 - LINK - 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; 

그리고 더 textBox.Enable 값 = (143 일)

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

답변

0

dataGridView1_CellValidating는 시도를 사용하여 동일한 행에 저장한다. 셀이 입력 포커스를 잃어서 내용 검증이 가능할 때 발생합니다. 따라서 현재 행을 편집하는 대신 새 행을 추가하려면 유효성을 검사 할 때 행의 현재 값을 가져와 새 행을 추가하고 유효성 검사를 마치면 e.Cancel을 사용하여 행 편집을 취소하십시오.

데이터를 일부 행에서 텍스트 상자로 복사하려면 텍스트 상자를 변경 한 다음 버튼을 새 행 추가로 사용하면 dataGridView1_CellClick - LINK을 사용할 수 있습니다. 그래서 기본적으로 사용자가 셀을 클릭하면 row index of that cell을 얻습니다. 그런 다음 해당 행의 모든 ​​셀에 액세스 할 수 있습니다. 텍스트 상자를 채우고 몇 가지 사항을 변경하면 저장 버튼에 새 행이 추가됩니다.

귀하의 질문에 당신이 여기에 답이 DataGridView에 새로운 행을 추가하는 방법도 경우 : LINK

+0

@TobiasJohansson 내가 편집 한 내 대답은 – DoLoop

+0

이제 내가 당신을 이해하지 못하는 봐. 어떻게 보이는지 알 수 있도록 양식을 캡쳐 해주실 수 있겠습니까? 버튼 기능이 DataGridview에 새로운 행을 추가하는 것입니다. – DoLoop

+0

@TobiasJohansson 저는 여러분이하고 싶은 것을 따라 잡고 있다고 생각합니다.하지만 잘못하고있는 것 같습니다. 'Ny' 버튼은 텍스트 박스를 활성화하기 만하면됩니다. 반면'Spara'에서는 텍스트 상자에 쓴 내용을 저장하고 NEW ROW를 추가합니다. 그리고 다른 하나는 요점을 보지 못합니다. – DoLoop

관련 문제