2014-09-28 2 views
0

안녕하십니까. 사용자가 예/아니요 대화 상자를 사용하여 dataTable에 색인을 사용하여 많은 DataRows을 연속적으로 입력 할 수 있도록 VC# 2008을 사용하여 코드를 작성합니다.DataTable에 Datarow를 다시 입력하십시오.

먼저 사용자가 함수를 사용하여 텍스트 상자와 콤보 상자를 사용하여 데이터를 입력하면 dilodresult가 "더 많은 레코드를 입력 하시겠습니까?"라는 메시지를 표시합니다. 예를 텍스트 상자를 취소하고 함수를 호출하고 index을 plusing하고있는 DataGridView에서 데이터 but it doesnot show any data at the datagridviewand the dialogResult countinue showing without performing anything

을 보여 주면이는 fuction를 코드 :

public DataTable showout2(int index, bool bl) 
    { 
     DataTable dtab = new DataTable(); 
     DataRow row = dtab.NewRow(); 
     string[] newRow = new string[14]; 
     try 
     { 

      DataColumn dc1 = new DataColumn("رقم المتسلسل"); 
      DataColumn dc2 = new DataColumn("رقم الحساب"); 
      DataColumn dc3 = new DataColumn("أسم الحساب"); 
      DataColumn dc4 = new DataColumn("المالك"); 
      DataColumn dc5 = new DataColumn("تاريخ"); 
      DataColumn dc6 = new DataColumn("قيمة"); 
      DataColumn dc7 = new DataColumn("نوع العملة"); 
      DataColumn dc8 = new DataColumn("البيان"); 
      DataColumn dc9 = new DataColumn("الدائن"); 
      DataColumn dc10 = new DataColumn("المدين"); 
      DataColumn dc11 = new DataColumn(" اجمالي الدائن"); 
      DataColumn dc12 = new DataColumn("اجمالي المدين"); 
      DataColumn dc13 = new DataColumn("تفاصيل"); 
      DataColumn dc14 = new DataColumn("التأكيد"); 
      dtab.Columns.Add(dc1); 
      dtab.Columns.Add(dc2); 
      dtab.Columns.Add(dc3); 
      dtab.Columns.Add(dc4); 
      dtab.Columns.Add(dc5); 
      dtab.Columns.Add(dc6); 
      dtab.Columns.Add(dc7); 
      dtab.Columns.Add(dc8); 
      dtab.Columns.Add(dc9); 
      dtab.Columns.Add(dc10); 
      dtab.Columns.Add(dc11); 
      dtab.Columns.Add(dc12); 
      dtab.Columns.Add(dc13); 
      dtab.Columns.Add(dc14); 
      DateTime date = new DateTime(); 
      date = DateTime.Today; 

      row[0] = numb.Text.ToString(); 
      row[1] = Account_numb.Text.ToString(); 
      row[2] = account_nam.Text.ToString(); 
      row[3] = owner.Text; 
      row[4] = curency.Text.ToString(); 
      row[5] = date.ToString(); 
      row[6] = curncyval.Text; 
      row[7] = note.Text; 
      row[8] = Depet.Text; 
      row[9] = criedt.Text; 
      row[10] = Total_depet.Text; 
      row[11] = Total_credit.Text; 
      row[12] = Details.Text; 
      row[13] = "false"; 
      dtab.Rows.InsertAt(row, index); 
      dataGridView1.DataSource = dtab; 
      dataGridView1.DataSource = dtab; 
      DialogResult dialogResult = MessageBox.Show("تريد أدخال سجل أخر؟", "Some Title", MessageBoxButtons.YesNo); 
      if (dialogResult == DialogResult.Yes) 
      { 

       row[0] = numb.Text.ToString(); 
       row[1] = Account_numb.Text.ToString(); 
       row[2] = account_nam.Text.ToString(); 
       row[3] = owner.Text; 
       row[4] = curency.Text.ToString(); 
       row[5] = date.ToString(); 
       row[6] = curncyval.Text; 
       row[7] = note.Text; 
       row[8] = Depet.Text; 
       row[9] = criedt.Text; 
       row[10] = Total_depet.Text; 
       row[11] = Total_credit.Text; 
       row[12] = Details.Text; 
       row[13] = "false"; 


       numb.Clear(); 
       owner.Clear(); 
       Account_numb.Text = " "; 
       account_nam.Text = "  "; 
       curency.Text = "  "; 
       curncyval.Clear(); 
       Total_credit.Clear(); 
       Total_depet.Clear(); 
       note.Clear(); 
       Details.Clear(); 
       criedt.Clear(); 
       Depet.Clear(); 




       return showout2(++index, true); 
      } 
      else if (dialogResult == DialogResult.No) 
      { 
       return dtab; 
      } 
     } 
+0

내가이 (가) DGV 바인딩의 반복처럼 보이는 코드를이 후 –

+0

을 사라지게 edite 편집 한 문제를 해결 했습니까? –

+0

DGV가 데이터를 표시하지만 대화 상자가 데이터를 표시하고 대화 상자를 다시 작성하는 경우에만 –

답변

0

나는 정확히 어떤 문제가 있지만 보인다 이해하지 않는다 당신은 datagridview에 행을 추가하려고하고 새로운 행을 추가 한 후에 사용자에게 "더 이상 추가하지 않으시겠습니까?"라고 묻습니다.

먼저 응용 프로그램로드 또는 생성자에서 datagridview를 한 번 초기화해야합니다.

public void initDatagrid() 
     { 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "رقم المتسلسل" }); 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "رقم الحساب" }); 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "أسم الحساب" }); 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "المالك" }); 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "تاريخ" }); 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "قيمة" }); 
      dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "نوع العملة" }); 
      //... 
     } 

그 후 행

를 추가하려면이 함수를 호출
public void showout2() 
     { 
      object[] newRow = new object[14]; 
      try 
      { 

       newRow[0] = "test"; 
       newRow[1] = "test"; 
       newRow[2] = "test"; 
       newRow[3] = "test"; 
       newRow[4] = "test"; 
       newRow[5] = "test"; 
       newRow[6] = "test"; 
       //... 
       dataGridView1.Rows.Add(newRow); 

       if (MessageBox.Show("تريد أدخال سجل أخر؟", "Some Title", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) 
       { 
        //clear data here .. 
       } 

      } 
      catch (Exception ex) 
      { 

      } 
     } 

EX :

public yourClass() 
{ 
      InitializeComponent(); 
      initDatagrid(); 
} 

private void AddButton_Click(object sender, EventArgs e) 
{ 
    showout2(); 
} 
+0

DGV를 프로그래밍 방식으로 편집하여 행을 제공합니다 –

+0

DGV를 표시하는 문제가 수정되었지만 dialogResult가 여전히 발생합니다 –

+0

확인 이 ** datagrid에서 DataGridView.Rows.Count ** 및 데이터 격자 – DevC