我有一个用于结算的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
答案 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;
}
}