基于单元格双击另一个datagridview自动填充datagridview

时间:2017-02-16 14:57:58

标签: c# .net winforms datagridview

我有一个用于结算的datagridview。我添加了一个单独的datagridview来单独显示库存项目。因此,如果我双击项目名称,它应该出现在开票datagridview列名称项目名称中,并自动colmpete其他列,如mrp税等。如何做到这一点?我在列出datagridview的项目名称中添加了一个celldoubleclick事件,并像这样检索单元格值。

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 Name=@Name 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中的项目名称自动填充结算数据网格视图单元格,双击时只包含项目名称。

看下面的图片来了解我的想法。 Sample

1 个答案:

答案 0 :(得分: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;
    }
}