Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#.net中datagridview的特定列的单元格中添加值?_C#_Datagridview - Fatal编程技术网

如何在c#.net中datagridview的特定列的单元格中添加值?

如何在c#.net中datagridview的特定列的单元格中添加值?,c#,datagridview,C#,Datagridview,这就是我的datagridview的外观: “值名称”、“价格”、“总计”和“数量”列是从数据库中加载的。我想在“添加或减去的项目”列中添加初始值零(0) 这是我填充datagridview的方式: con.Open(); DataTable dt = new DataTable(); SqlCommand cm = new SqlCommand("SELECT * FROM Stock"); cm.Connection = con; SqlDataAdapter da

这就是我的datagridview的外观:

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

这是我填充datagridview的方式:

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递增/递减,递增/递减的值可以显示在“添加或减去的项目”列中,但如果我可以在其中输入初始值,效果会更好

我试过这个:

DataTable dt = new DataTable();
DataColumn newColumn = new DataColumn("addOrSubtractItem", typeof(String));
newColumn.DefaultValue = 0;
dt.Columns.Add(newColumn);
但它不显示0

我也试过:参考->


但是我不能把0值放在单元格中。

你基本上做得很好,但还不完全。从DB填充datatable后,向datatable添加新列,并将所有行设置为“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;

将新行添加到datatable时将使用defaultvalue。因此,我假设您没有添加通过Add/Create显示的行,而是通过一些其他方法(比如来自Tableadapter的查询)将其填充到datatable中。您需要在DataTable中的所有DataRow对象上明确地设置行的值。我使用datagridview中的“编辑列”手动添加列,并尝试在“添加或减去的项”列中添加值。使用
typeof(int)
而不是
typeof(string)
我必须问一下…此操作的目的是什么“添加或减去项目”列?它是添加或减去“数量”值吗?我只是好奇“如何”将此列与表中的其他列相关联,考虑到该列不在DB中,那么,“如何”将“保存”这个值?我遗漏了什么吗?@JohnG它只是为了视觉目的,所以用户将知道他添加/减去了多少项
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;