2017-02-16 76 views
0

我有一個datagridview帳單。我添加了一個單獨的datagridview來單獨顯示庫存項目。所以如果我雙擊一個項目名稱它應該出現在計費datagridview列名稱項目名稱和自動colmpete其他列如mrp稅等。如何做到這一點?我在項目名稱列表datagridview中添加了celldoubleclick事件並像這樣檢索單元格值。自動填充datagridview基於單元格在另一個datagridview中雙擊

private void dgv_ItemNamePOS_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
    { 
     string a = dgv_ItemNamePOS.CurrentRow.Cells[0].Value.ToString(); 
     dgv_POS.Rows[0].Cells[1].Value = a.ToString(); 


    } 

該值出現在結算gridview項名稱列中。我在計費datagridview中添加了值更改的事件,但沒有觸發。

SqlConnection con = new SqlConnection(CS); 
      con.Open(); 
      if (dgv_POS.Rows.Count == 0) 
      { 
       SqlCommand cmd = new SqlCommand("SELECT Item_Code from Items where [email protected] AND Activate='Yes'", con); 
       cmd.Parameters.AddWithValue("@Name", dgv_POS.Rows[0].Cells[1].Value.ToString()); 
       string k = cmd.ExecuteScalar().ToString(); 
       dgv_POS.CurrentRow.Cells[2].Value = k; 

      } 

我想將此項目名稱添加到計費datagridview中的下一個空行。有人可以幫助我解決這個問題嗎?我想在另一個datagridview中基於項目名稱自動填充計費datagridview單元格,其中只有雙擊時才包含項目名稱。

看到下面的圖片讓我的想法。 Sample

回答

0

其實我不明白你需要的一切,但如果你只需要顯示每個賬單項目的詳細信息,請執行下列操作:

public partial class Form1 : Form 
{ 
    List<BillItem> _Items = new List<BillItem>(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 
     DataColumn clmItemName = new DataColumn("clmItemName", typeof(string)); 
     dt.Columns.Add(clmItemName); 
     dt.Rows.Add("Parle-G"); 
     dt.Rows.Add("Kardjack"); 

     dgv_ItemNamePOS.DataSource = dt; 

     // to simulate items' details in database 
     _Items.Add(new BillItem() { No = 1, ItemName = "Parle-G", Code = "P-G", MRP = "***" }); 
     _Items.Add(new BillItem() { No = 1, ItemName = "Kardjack", Code = "K", MRP = "@@@" }); 
    } 

    class BillItem 
    { 
     public int No { get; set; } 
     public string ItemName { get; set; } 
     public string Code { get; set; } 
     public string MRP { get; set; } 
    } 

    private void dgv_ItemNamePOS_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
    { 
     string a = dgv_ItemNamePOS.CurrentRow.Cells[0].Value.ToString(); 
     dgv_POS.Rows[0].Cells[1].Value = a.ToString(); 

     BillItem billItem = _Items.First(item => item.ItemName == a); 

     dgv_POS.Rows[0].Cells[0].Value = billItem.No.ToString(); 
     dgv_POS.Rows[0].Cells[2].Value = billItem.Code.ToString(); 
     dgv_POS.Rows[0].Cells[3].Value = billItem.MRP; 
    } 
}