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