我现在做一个WinForm程序,我已经通过SQL语句把需要的字段查出来并能添加相应的列名在一个自定义的DataTable里,再将DataTable赋给一个窗体中的Datagridview能成功显示出来。
问题是我现在的需求是:添加一个列名:数量(数据库里没有该字段和数据),数量为1.特别注意的是假如我显示了5行数据,则数量也要显示5行“1”。
最好是在我自定义中的DataTable里写代码,不要用SQL语句。
万分感谢!
问题是我现在的需求是:添加一个列名:数量(数据库里没有该字段和数据),数量为1.特别注意的是假如我显示了5行数据,则数量也要显示5行“1”。
最好是在我自定义中的DataTable里写代码,不要用SQL语句。
万分感谢!
DataTable dt = new DataTable();
dt.Columns.Add("A");
dt.Columns.Add("B", typeof(Int32), "count(A)");
dt.Rows.Add("1111");
dt.Rows.Add("1111");
dt.Rows.Add("1111");
DataColumn dc = new DataColumn("新列");
dt.Columns.Add(dc);
foreach (DataRow dr in dt.Rows)
{
dr["新列"] = 1;
}
dt.Columns.Add(New System.Data.DataColumn("数量", System.Type.GetType("System.Int32"), "1"))
不知道可行,上面是用vb.net语言写的,想要c#的转换一下就行了。
DataColumn workColumn = workTable.Columns.Add(
"数量", typeof(Int32));
workColumn.AutoIncrement = true;
workColumn.AutoIncrementSeed = 1;
workColumn.AutoIncrementStep = 0;新增一列数量,设置为自动增长类型,从1开始每次增长0个。
private DataTable getDateTable()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("Name", typeof(String)));
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "消";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "里";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "网";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "涨";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "刘";
dt.Rows.Add(dr);
return dt;
}
protected void btn_Click(object sender, EventArgs e)
{
DataTable dt = getDateTable();
dt.Columns.Add(new DataColumn("数量", typeof(String)));
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["数量"] = "1";
}
}
DataColumn priceColumn = new DataColumn();
priceColumn.DataType = System.Type.GetType("System.Decimal");
priceColumn.ColumnName = "数量";
priceColumn.DefaultValue = 1;//默认值 1刚发现,直接设置DefaultValue 属性就可以了
建议在sql里直接加一列就行了,窗体上也行:
DataTable dt = new DataTable();
dt.Columns.Add("quantity", typeof(Int32));
dt.Columns["quantity"].DefaultValue = 1;接下来再做 dt 数据源填充
DataColumn dc = new DataColumn("新列");
dt.Columns.Add(dc);
dc.DefaultValue = 1;