2015-02-10 74 views
0

我想添加行到datagridview文本框離開事件。每當我離開文本框時,對應於在文本框中輸入的文本的值應該逐個添加到網格中。但在我的情況下,當我離開第二個條目的文本框時,先前添加的網格中的第一行消失,僅添加第二行。以下是代碼。任何人都可以指導我在這裏做什麼錯誤?麻煩添加新行到datagridview在運行時使用c#

private void textBox4_Leave(object sender, EventArgs e) 
    { 

     //textBox1.Focus(); 
     int rcount = dataGridView1.RowCount; 
     if (rcount == 1) 
     { 
      dataGridView1.Columns.Clear(); 
     } 
     DataTable dt = new DataTable(); 
     decimal cost = 0; 
     decimal retail = 0; 
     decimal discount = Convert.ToDecimal(textBox4.Text); 
     string bilno = lblBil.Text; 
     MySqlConnection connection = new MySqlConnection(myconnectionstring); 
     connection.Open(); 
     string money = "SELECT COST_PRICE,RETAIL_PRICE FROM INVENTORY_VALUE WHERE BARCODE = @barcode"; 
     MySqlCommand cmd1 = new MySqlCommand(money, connection); 
     cmd1.Parameters.AddWithValue("@barcode", textBox2.Text); 
     MySqlDataReader myreader = cmd1.ExecuteReader(); 
     while (myreader.Read()) 
     { 
      cost = decimal.Parse(myreader["COST_PRICE"].ToString()); 
      retail = decimal.Parse(myreader["RETAIL_PRICE"].ToString()); 
     } 
     connection.Close(); 
     decimal finalcost = cost * Convert.ToDecimal(textBox3.Text); 
     decimal finalretail = retail * Convert.ToDecimal(textBox3.Text); 
     decimal finaldiscount = discount; 
     decimal finalamount = finalretail + finaldiscount; 
     MySqlConnection connection1 = new MySqlConnection(myconnectionstring); 

     string inputprod = "SELECT @sno SNo,ir.product_name Product_Name,iv.unit_qty Unit_Qty, iv.uom UOM,@total_qty Total_Qty,@retail Cost,@discount Discount,@amount Amount,ir.plu_code Plu_Code,iv.barcode Barcode,iv.description Description,@cost OrgCost,ir.dept_id Dept_ID,ir.cat_id Cat_ID,ir.primary_vendor_id Supplier_ID FROM inventory_register ir,inventory_value iv WHERE iv.barcode = ir.barcode AND ir.barcode = @barcode"; 
     connection1.Open(); 
     MySqlCommand cmd = new MySqlCommand(inputprod, connection1); 
     cmd.Parameters.AddWithValue("@total_qty",decimal.Parse(textBox3.Text)); 
     cmd.Parameters.AddWithValue("@barcode", textBox2.Text); 
     cmd.Parameters.AddWithValue("@sno", textBox1.Text); 
     cmd.Parameters.AddWithValue("@cost", finalcost); 
     cmd.Parameters.AddWithValue("@retail",finalretail); 
     cmd.Parameters.AddWithValue("@discount",finaldiscount); 
     cmd.Parameters.AddWithValue("@amount",finalamount); 
     MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); 
     MySqlCommandBuilder cbuilder = new MySqlCommandBuilder(adapter); 

     adapter.Fill(dt); 
     dataGridView1.DataSource = dt; 
     connection1.Close(); 
     DataGridViewColumn colS_NO = dataGridView1.Columns[0]; 
     colS_NO.Width = 50; 
     DataGridViewColumn colProduct = dataGridView1.Columns[1]; 
     colProduct.Width = 200; 

     dataGridView1.Columns[7].Visible = false; 
     dataGridView1.Columns[8].Visible = false; 
     dataGridView1.Columns[9].Visible = false; 
     dataGridView1.Columns[10].Visible = false; 
     dataGridView1.Columns[11].Visible = false; 
     dataGridView1.Columns[12].Visible = false; 
     dataGridView1.Columns[13].Visible = false; 
     dataGridView1.Columns[14].Visible = false; 
     decimal TotNo = decimal.Parse("0.00"); 
     for (int i = 0; i < dataGridView1.RowCount - 1; i++) 
     { 
      TotNo = TotNo + Convert.ToDecimal(dataGridView1.Rows[i].Cells[7].Value); 

     } 
     lblNFqtyNo.Text = NFQTYNo.ToString(); 
     lblStotNo.Text = SubTot.ToString(); 
     lblDiscNo.Text = DiscNo.ToString(); 
     lblTotNo.Text = TotNo.ToString(); 

     } 

enter image description here

+0

請檢查這一行。 dataGridView1.DataSource = dt;來自數據庫的數據源是您設置的數據源。在這裏,我認爲不是再次設置數據源,您需要做的是向datagridview添加一行。像dataGridView1.Rows.Add(/ /使新行你想要的新值)..如果這可以幫助你,請讓我知道我會加入這個答案 – 2015-02-10 17:24:32

+0

或者你可以使用下面的代碼片段。 var index = dataGridView1.Rows.Add(); dataGridView1.Rows [index] .Cells [「Sno」]。Value = 2; // dataGridView1.Rows [index] .Cells [「Product_Name」]。Value =「DHAWAT Brown Rice」; – 2015-02-10 17:36:42

+0

非常感謝你@Kishore :) :)它工作。我使用了上面提到的代碼片段,並指定了讀者讀取的值。 :) – Ameena 2015-02-10 17:44:13

回答

0

請檢查此行。 dataGridView1.DataSource = dt;來自數據庫的數據源是您設置的數據源。在這裏,我認爲不是再次設置數據源,您需要做的是向datagridview添加一行。像dataGridView1.Rows.Add(//用新值創建新行)

或者你可以使用下面的代碼片段。

var index = dataGridView1.Rows.Add(); 
dataGridView1.Rows[index].Cells["Sno"].Value = 2; 
dataGridView1.Rows[index].Cells["Product_Name"].Value = "DHAWAT Brown Rice";