2016-05-12 72 views
0

我想在每次按下按鈕時將新行添加到gridcontrol。 我嘗試了很多方法,但沒有成功。我正在發送我的代碼。如何在winform中的每個按鈕單擊時向datagrid添加新行

private void B_Click(object sender, EventArgs e) 
{ 
    Button bt = (Button)sender; 
    int productId = (int)bt.Tag; 
    AddProductDataContext db = new AddProductDataContext(); 
    decimal Quantity; 
    decimal.TryParse(txtCalculator.Text, out Quantity); 
    gridControl1.DataSource = from inv in db.Inventories where inv.RecId == productId 
     select new 
     { 
     inventoryName = inv.InventoryName, 
     Quantity, 
     Total = Quantity * inv.InventoryPrice 
     }; 
    gridView1.AddNewRow(); 
    gridView1.UpdateCurrentRow(); 
} 

有沒有人能幫我解決上述問題?在此先感謝您的寶貴答覆。

+0

什麼是你的gridControl1的數據源? –

+0

Linq to sql是數據源 –

回答

0

試試這個:

Button bt = (Button)sender; 
     int productId = (int)bt.Tag; 
     AddProductDataContext db = new AddProductDataContext(); 
     decimal Quantity; 
     decimal.TryParse(txtCalculator.Text, out Quantity); 
    var results = from inv in db.Inventories 
              where inv.RecId == productId 
              select new 
              { 
               inventoryName = inv.InventoryName, 
               Quantity, 
               Total = Quantity * inv.InventoryPrice 
              }; 

       DataTable dt = new DataTable(); 
       dt.Columns.Add("inventoryName"); 
       dt.Columns.Add("Quantity"); 
       dt.Columns.Add("Total"); 

       foreach (var x in results) 
       { 
        DataRow newRow = dt.Rows.Add(); 
        newRow.SetField("inventoryName", x.inventoryName); 
        newRow.SetField("Quantity", x.Quantity); 

        newRow.SetField("Total", x.Total); 

       } 

       gridControl1.DataSource = dt; 
       gridView1.AddNewRow(); 
+0

我試過但結果相同。沒有添加新行,只是在每次點擊時刷新行。 –

+0

你能用新代碼編輯你的問題嗎? –

+0

您必須更改gridControl1.DataSource = dt;到gridView1.DataSource = dt;再試一次 –

相關問題