C# 基于在另一个datagridview中双击单元格自动填充datagridview

C# 基于在另一个datagridview中双击单元格自动填充datagridview,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一个用于计费的datagridview。我添加了一个单独的datagridview来单独显示库存项目。因此,如果我双击一个项目名称,它应该出现在billing datagridview列names items name中,并自动显示其他列,如mrp tax等。如何做到这一点?我在items name中添加了一个celldoubleclick事件,列出datagridview并检索单元格值,如下所示 private void dgv_ItemNamePOS_CellDoubleClick(ob

我有一个用于计费的datagridview。我添加了一个单独的datagridview来单独显示库存项目。因此,如果我双击一个项目名称,它应该出现在billing datagridview列names items name中,并自动显示其他列,如mrp tax等。如何做到这一点?我在items name中添加了一个celldoubleclick事件,列出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();


    }
该值显示在billing gridview项目名称列中。我在billing 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;

            }
我想将此项目名称添加到billing datagridview中的下一个空闲行。有人能帮我解决这个问题吗。我想根据另一个datagridview中的项目名称自动填充billing datagridview单元格,双击该单元格只包含项目名称

请看下图了解我的想法。

事实上,我并不了解您需要的所有信息,但如果您只需要显示每个账单项目的详细信息,请检查以下内容:

    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;
    }
}
公共部分类表单1:表单
{
列表_Items=新列表();
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
DataTable dt=新的DataTable();
DataColumn clmItemName=新的DataColumn(“clmItemName”,typeof(string));
dt.Columns.Add(clmItemName);
dt.行添加(“Parle-G”);
dt.行。添加(“卡尔扎克”);
dgv_ItemNamePOS.DataSource=dt;
//在数据库中模拟项目的详细信息
_添加(新BillItem(){No=1,ItemName=“Parle-G”,Code=“P-G”,MRP=“***”});
_添加(新BillItem(){No=1,ItemName=“Kardjack”,Code=“K”,MRP=“@@@@”});
}
类BillItem
{
公共int No{get;set;}
公共字符串ItemName{get;set;}
公共字符串代码{get;set;}
公共字符串MRP{get;set;}
}
私有void dgv_ItemNamePOS_CellDoubleClick(对象发送方,DataGridViewCellEventArgs e)
{
字符串a=dgv_ItemNamePOS.CurrentRow.Cells[0].Value.ToString();
dgv_POS.行[0]。单元格[1]。值=a.ToString();
BillItem BillItem=\u Items.First(item=>item.ItemName==a);
dgv_POS.行[0]。单元格[0]。值=billItem.No.ToString();
dgv_POS.行[0]。单元格[2]。值=billItem.Code.ToString();
dgv_POS.行[0]。单元格[3]。值=billItem.MRP;
}
}