我想在我的最后一行下面的datagridview中添加一行,显示记录的摘要。所以我填充我的数据集,然后在其中添加一行,之后我将它绑定到datagridview然后当我尝试分配我的带有值的新行它给了我错误,无法将日期时间转换为字符串为第四列数据类型是datetime.SO我的问题是我们可以更改特定行单元格的列类型,如果不是那么我怎样才能实现我想做的事情?
string SelectGroupQuery = "Select * From GroupMembers Where GID=@Id ";
using (SqlConnection conGroup = new SqlConnection(ConnectionString.ToString()))
{
using (SqlCommand commandGroup = new SqlCommand(SelectGroupQuery, conGroup))
{
commandGroup.CommandType = CommandType.Text;
commandGroup.Parameters.Add(new SqlParameter("Id", Id));
SqlDataAdapter da = new SqlDataAdapter(commandGroup);
DataSet ds = new DataSet();
da.Fill(ds);
d1 = new DataGridView();
this.Controls.Add(d1);
d1.Location = new Point(50,y);
d1.Size = new Size(600, 300);
dr = ds.Tables[0].NewRow();
ds.Tables[0].Rows.Add(dr);
d1.DataSource = ds.Tables[0];
d1.Columns[4].ValueType = typeof(string);
d1.Rows[d1.Rows.Count-2].Cells[4].Value = "Total Amount";
y = y + 400;
}
}
答案 0 :(得分:0)
可以为某些列类型更改特定单元格的类型。请参阅this回答。但我不推荐它。
在datagridview
中使用行来显示摘要是很棘手的,因为它会带来一些问题(绑定到数据库时更多)。您可以使用datagridview外部的文本框创建摘要行,并将摘要数据添加到它们。检查this codeproject链接以获取工作示例。
答案 1 :(得分:0)
您可以通过处理CellFormatting事件来伪造它,而不是将值赋给单元格。如果e.ColumnIndex = 4且e.RowIndex是网格中的最后一行,请将格式化的值设置为您想要的标签,并设置EventArgs的属性以告诉您格式化了该值。
如果您没有将整个DataGridView设置为只读,那么您可能还希望处理CellBeginEdit事件并取消编辑(如果它是摘要行)。