c# 中DataGridView 验证数据

了束轮回 2010-12-20 11:57:57
我在通过数据验证时,当验证数据有问题时,怎么不会出现相应的错误符号(红色的感叹号),急求~~~
代码如下:
private void dgvBasePointsList_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "";
int newInteger;
double newDouble;

if (this.dgvBasePointsList.Rows[e.RowIndex].IsNewRow) { return; }
this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "";
switch (e.ColumnIndex)
{
case 0:
{
if(!int.TryParse(e.FormattedValue.ToString(),out newInteger) || newInteger < 0)
{
e.Cancel = true;
this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "点号必须输入正整数!";


}
}
break;
...全文
272 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
了束轮回 2010-12-27
  • 打赏
  • 举报
回复
结贴了。给分
rabbitlzx 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhanghantong 的回复:]

我把代只剩下:this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "点号必须输入正整数!";这句话了,还是不会出现,在这句话设置断点,也会程序也会进入此断点,但是就是不显示,哎,愁死了
[/Quote]
按照我14楼的方法看看好用不,如果好用,就是你的代码里有别的地方又把ErrorText赋值了,如果不好用我也没办法了,除非把你的代码给我
了束轮回 2010-12-21
  • 打赏
  • 举报
回复
我把代只剩下:this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "点号必须输入正整数!";这句话了,还是不会出现,在这句话设置断点,也会程序也会进入此断点,但是就是不显示,哎,愁死了
rabbitlzx 2010-12-21
  • 打赏
  • 举报
回复
你的出不来 估计是你validating的代码写的有问题,也就是逻辑有问题,你把validating的code都注释掉,然后强制让其显示错误,你看看行不行
this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "点号必须输入正整数!";
rabbitlzx 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhanghantong 的回复:]

欲哭无泪呀,崩溃了,还是不行
[/Quote]

你新建一个winform工程,拖一个datagridview控件上去,然后用下面的代码,看看在datagridview编辑后是不是有row error


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.Columns.Add("c1", "id");
dataGridView1.Columns.Add("c2", "name");
}

private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = "error!";
}
}

yangchenhuahua 2010-12-20
  • 打赏
  • 举报
回复
用 try catch
了束轮回 2010-12-20
  • 打赏
  • 举报
回复
欲哭无泪呀,崩溃了,还是不行
了束轮回 2010-12-20
  • 打赏
  • 举报
回复
好的,我试一下啊,谢谢朋友
rabbitlzx 2010-12-20
  • 打赏
  • 举报
回复
在Cell的validating里应该设置Cell的ErrorText,如果你要设置Row的errortext,则应该到RowValidating事件去写代码

private void dataGridView3_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{

}
rabbitlzx 2010-12-20
  • 打赏
  • 举报
回复
dgvBasePointsList_CellValidating 函数写的有问题吧,你只留下面一句,然后把其他的code都注释掉看看

this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "点号必须输入正整数!";

估计是后来又进入这个函数,然后把Rows[e.rowindex].ErrorText设置为空了
flowfog 2010-12-20
  • 打赏
  • 举报
回复
说明判断那里有问题
了束轮回 2010-12-20
  • 打赏
  • 举报
回复
可以触发断点的,请朋友指点一下,等待中~~谢谢
rabbitlzx 2010-12-20
  • 打赏
  • 举报
回复
你在下面这句加下断点,然后调试,看看能触发断点么
this.dgvBasePointsList.Rows[e.RowIndex].ErrorText = "点号必须输入正整数!";
了束轮回 2010-12-20
  • 打赏
  • 举报
回复
我在属性上已经把 ShowRowErrors =选为 true了,还是不行;
了束轮回 2010-12-20
  • 打赏
  • 举报
回复
flowfog这位朋友,点击其他的行也不会出现红色感叹号
rabbitlzx 2010-12-20
  • 打赏
  • 举报
回复
datagridview1.ShowRowErrors = true;
flowfog 2010-12-20
  • 打赏
  • 举报
回复
鼠标点某一行会不会出现红色叹号?
wuyq11 2010-12-20
  • 打赏
  • 举报
回复
设置 DataGridViewCell.ErrorText 时,单元格中将显示感叹号图标。将鼠标悬停在此图标上将显示错误消息。
设置 DataGridViewRow.ErrorText 时,行左侧的行标题中将显示感叹号图标。将鼠标悬停在此图标上将显示错误消息。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧