【问题标题】:How to add a value in the cells of a specific column in a datagridview in c#.net?如何在 c#.net 的 datagridview 中的特定列的单元格中添加值?
【发布时间】:2020-11-18 11:54:11
【问题描述】:

这就是我的 datagridview 的样子:

名称、价格、总计和数量列的值是从数据库加载的。我想在“添加或减去项目”列中添加一个初始值零 (0)。

这就是我填充数据网格视图的方式:

con.Open();
DataTable dt = new DataTable();
SqlCommand cm = new SqlCommand("SELECT * FROM Stock");
cm.Connection = con;

SqlDataAdapter da = new SqlDataAdapter(cm);
da.Fill(dt);
stockGridView.AutoGenerateColumns = false;
stockGridView.Columns[0].DataPropertyName = "Name";
stockGridView.Columns[1].DataPropertyName = "Price";
stockGridView.Columns[2].DataPropertyName = "Total";
stockGridView.Columns[3].DataPropertyName = "Quantity";
stockGridView.DataSource = dt;
con.Close();

我的 + 和 - 列现在正在工作,现在可以递增/递减 1,并且递增/递减的值可以显示在“添加或减去的项目/s”列中,但如果我能把它会更好那里有一个初始值。

我试过这个:

DataTable dt = new DataTable();
DataColumn newColumn = new DataColumn("addOrSubtractItem", typeof(String));
newColumn.DefaultValue = 0;
dt.Columns.Add(newColumn);

但它不显示 0

我也试过了:参考 -> https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/unbound-column-to-a-data-bound-datagridview?view=netframeworkdesktop-4.8

DataGridViewTextBoxColumn buttonColumn = new DataGridViewTextBoxColumn();
buttonColumn.Name = "Item/s Added or Subtracted";
buttonColumn.HeaderText = "Item/s Added or Subtracted";
stockGridView.Columns.Insert(4, buttonColumn);

但我不能将 0 值放入单元格中。

【问题讨论】:

  • 向数据表添加新行时将使用默认值。所以我假设您没有添加通过添加/创建显示的行,而是通过其他方式(例如来自 Tableadapter 的查询)将其填充到数据表中。您需要在 DataTable 中的所有 DataRow 对象中显式设置行的值。
  • 我使用 datagridview 中的“编辑列”手动添加列,并尝试在“添加或减去的项目”列中输入一个值。
  • 使用typeof(int) 而不是typeof(string)
  • 我要问...“增加或减少项目”列的目的是什么?它是增加还是减少“数量”值?我只是好奇“如何”使用该列与表中的其他列相关,考虑到该列不在数据库中,那么,“如何”“保存”这个值?我错过了什么吗?
  • @JohnG 这只是为了视觉目的,所以用户会知道他添加/减去了多少项目

标签: c# datagridview


【解决方案1】:

你基本上做得很好,但并不完全。从数据库填充数据表后,您将新列添加到数据表并将所有行设置为“0”值。然后将 DataTable 设置为 GridView 的数据源。

程序代码示例:

con.Open();
DataTable dt = new DataTable();
SqlCommand cm = new SqlCommand("SELECT * FROM Stock");
cm.Connection = con;

SqlDataAdapter da = new SqlDataAdapter(cm);
da.Fill(dt);
con.Close();

//add new column to Datatable
dt.Columns.Add("addOrSubtractItem", typeof(int));
foreach (DataRow dr in dt.Rows)
{
    dr["addOrSubtractItem"] = 0;
}

stockGridView.AutoGenerateColumns = false;
stockGridView.Columns[0].DataPropertyName = "Name";
stockGridView.Columns[1].DataPropertyName = "Price";
stockGridView.Columns[2].DataPropertyName = "Total";
stockGridView.Columns[3].DataPropertyName = "Quantity";
stockGridView.Columns[4].DataPropertyName = "addOrSubtractItem";
stockGridView.DataSource = dt;

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2023-01-20
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多