从数据库和TextBox填充DataGridView

时间:2017-09-22 03:27:41

标签: c# .net winforms datagridview

基本上我想添加TextBox中的另一列以及我从数据库中查询的值。我希望我的datagridview显示类似

的内容
          |itemcode|Category|itemDescription|unitcost|quantity|

其中itemcode, Category, itemDescription, unitcost来自数据库,quantity来自文本框输入。

private void btnAddToCart_Click(object sender, EventArgs e)
{
    con.OpenConnection();
    MySqlCommand cmd = con.connection.CreateCommand();
    string search = txtSearchProduct.Text;
    string quantity = txtQuantity.Text;
    string query = "SELECT itemcode, Category, itemDescription, unitcost FROM tblprowareproducts WHERE itemDescription LIKE ?search";
    cmd.CommandText = query;
    cmd.Parameters.AddWithValue("?search", "%" + search + "%");
    using (MySqlDataAdapter mda = new MySqlDataAdapter(cmd))
    {
        DataTable dt = new DataTable();
        mda.Fill(dt);

        dgvCart.DataSource = dt;

    }
}

有没有办法在名为unitcost的{​​{1}}之后添加另一列,并且它的值来自quantity

1 个答案:

答案 0 :(得分:1)

此问题有不同的解决方案,例如您可以通过这种方式将列添加到DataTable

DataTable dt = new DataTable();
mda.Fill(dt);

var quantity = dt.Columns.Add("quantity", typeof(int));
quantity.DefaultValue = int.Parse(txtQuantity.Text);
dt.AsEnumerable().ToList().ForEach(r =>
{
    r[quantity] = quantity.DefaultValue;
});

dgvCart.DataSource = dt;

注1 :您可能希望使用TryParse从文本中获取整数值。

注意2 :添加行时,列的默认值适用于列。因此,要将其应用于现有行,您需要像我所做的那样使用循环。对于之后添加的新行,它将自动应用。