我在DataGrideView 添加了 DateTimePicker 控件,当选中某一单元格时,显示该控件,当用户选择一个日期后,将这个日期赋值到单元格中。问题是 我现在选择了一个日期后,DataGrideView并没有在下面新增一行,如果我在别的单元格手动输入一些文字时,DataGrideView是会在下面新增一行的。请问该如何解决?谢谢
解决方案 »
- 为什么窗体在加载时出现黑色?
- 数学问题,求排列组合?
- 如何使用在类库或控件库中的资源
- Remoting Socket异常“请求的名称有效,但是没有找到请求的类型的数据”
- 急,请问在vs2005里面怎么使用DatePicker,需要哪几个步骤,在线等
- 哪位有 C# ADO。NET的供初学者学习的代码
- 在控制台程序中调用其它控制台程序并进行输出重定向
- C#怎样获取zip类型压缩文件里面的文件名
- ASP.NET中调用Crystal report(C#),如何实现printtoprinter?急,代码详见内容
- 谁能帮我把下面这段VB.NET的代码转换成C#?
- 如何用c#导出本地磁盘下的多个excel文件中的图片
- C#能不能调用含有allegro库的C语言DLL?
没有此时没有新增一行如果是手输的文字会新增一行的
问题是如果只选了一个日期,我又不要这行了,根本没法删除,调试时发现DataTable里还是会有个日期
不知道怎么解决
出现你的问题的情况就是左边有“*”号标记,代表这条数据还没有提交。
这样的话 有一个方法可以解决;
if (dataGridView2.SelectedCells[0].RowIndex == dataGridView2.Rows.Count-1)//判断这行数据是否提交了
{
dataGridView2.Rows.Add();
dataGridView2.Rows[dataGridView2.Rows.Count - 2].Cells[0].Value = dateTimePicker1.Value.ToShortDateString();
}
else
{
dataGridView2.SelectedCells[0].Value = dateTimePicker1.Value.ToShortDateString();
}
非常感谢! 不过好像还是有问题,我的DataGrideView 是用DataTable 进行数据绑定的,然后按照你的方法,我在 DateTimePicker 的 CloseUp 事件中 添加了你的 代码,然后 报了这个错 : “当控件被数据绑定时,无法以编程方式向DataGrideView的行集合中添加行!”
if (dataGridView2.SelectedCells[0].RowIndex == dataGridView2.Rows.Count-1)
{
dt.Rows.Add();//dt是你绑定的DataTable数据源
dt.Rows[dataGridView2.SelectedCells[0].RowIndex - 1][dataGridView2.SelectedCells[0].ColumnIndex] = dateTimePicker1.Value.ToShortDateString();
}
else
{
dt.Rows[dataGridView2.SelectedCells[0].RowIndex][dataGridView2.SelectedCells[0].ColumnIndex] = dateTimePicker1.Value.ToShortDateString();
}
dataGridView2.DataSource = dt;
给你参考一下。你那里的代码自己琢磨一下。