让datagridview的某些列只能输入英文!!在线等!!!!!

jinsuo_1986 2009-04-04 09:52:55
想让datagridview的列实现类似datagridview的imemode = disable;的功能;就是有一个可编辑的datagridview,有些列可以输入中文,有些只能是数字和英文,对于那些只能是数字和英文的,如何实现让他们只能被输入数字和英文。
...全文
630 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldongwei 2009-04-18
  • 打赏
  • 举报
回复
很好,但就是有点不太懂
wartim 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wartim 的回复:]
为什么我看见正则就头大呢。。。


C# code
this.dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is TextBox)
{
TextBox tb = e.Con…
[/Quote]


这样不符合的会跟本输不进去
aofong19871029 2009-04-16
  • 打赏
  • 举报
回复
用 vs 自带的验证空间就可以了把
wartim 2009-04-13
  • 打赏
  • 举报
回复
为什么我看见正则就头大呢。。。


this.dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is TextBox)
{
TextBox tb = e.Control as TextBox;
if (dataGridView1.CurrentCell.ColumnIndex == 0) // 只对第1列有效
tb.KeyPress += new KeyPressEventHandler(tb_KeyPress);
else
tb.KeyPress -= new KeyPressEventHandler(tb_KeyPress);
}
}

void tb_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsDigit(e.KeyChar)))
{
if (!char.IsLetterOrDigit(e.KeyChar)
&& e.KeyChar != '+' && e.KeyChar != '-'
&& e.KeyChar != '*' && e.KeyChar != '/'
&& e.KeyChar != '(' && e.KeyChar != ')')
e.Handled = true;
}
}
surlew 2009-04-13
  • 打赏
  • 举报
回复
关注,学习
zhangyanyang 2009-04-13
  • 打赏
  • 举报
回复
mark
joeandlily 2009-04-13
  • 打赏
  • 举报
回复
可以用ajax控件,FilteredTextBoxExtender来解决。
具体用法:
1:在gridview的模板列添加TextBox,名字为TextBox1
2:添加FilteredTextBoxExtender
<cc1:FilteredTextBoxExtender ID="FilteredTextBoxExtender1"
runat="server" Enabled="True"
TargetControlID="TextBox1" FilterMode="InvalidChars"
InvalidChars="被屏蔽的字符">
</cc1:FilteredTextBoxExtender>
3:2也可以反过来用,即
FilterMode="InvalidChars" -〉FilterMode="ValidChars"
InvalidChars="被屏蔽的字符" -〉ValidChars="可用的字符"
jiyan1221 2009-04-13
  • 打赏
  • 举报
回复
這個一定要頂,關注~~
abcdef1111111 2009-04-09
  • 打赏
  • 举报
回复
up
zixi123 2009-04-09
  • 打赏
  • 举报
回复
好难啊
学习
lincong1978 2009-04-08
  • 打赏
  • 举报
回复
mark
luanhaipeng 2009-04-07
  • 打赏
  • 举报
回复
这个问题很好,想学!!盼教
通过正则验证单元格输入
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
double c= 0.0;
dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
if(dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "A")
{
if(!double.TryParse(e.FormattedValue.ToString(),out c) || c <0.0)
{
dataGridView1.Rows[e.RowIndex].ErrorText = "数量输入有误!";
e.Cancel = true;
}
}
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
}
能帮忙解释一下吗,看不太懂
skyctr 2009-04-07
  • 打赏
  • 举报
回复
帮顶
jinsuo_1986 2009-04-04
  • 打赏
  • 举报
回复
谢谢楼上的回答!
我想要的是: 英文、数字、运算符号、括号
wuyq11 2009-04-04
  • 打赏
  • 举报
回复
通过正则验证单元格输入
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
double c= 0.0;
dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
if(dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "A")
{
if(!double.TryParse(e.FormattedValue.ToString(),out c) || c<0.0)
{
dataGridView1.Rows[e.RowIndex].ErrorText = "数量输入有误!";
e.Cancel = true;
}
}
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex].ErrorText = string.Empty;
}

zzxap 2009-04-04
  • 打赏
  • 举报
回复
onkeyup="this.value=this.value.replace(/[^a-z_-]/g,'')" //限制只能输入英文字母和_和-
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" //只能输入中文
onkeyup="if(isNaN(value)){alert('只能输入有效数字');execCommand('undo');}"//只能输入有效数字
onkeyup="if(!value.match(new RegExp('^[0-9]+$'))){alert('只能输入数字');this.value='';}"//只能输入整数


正则表达式

"^\\d+$"  //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?\\d+$"    //整数
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?\\d+)(\\.\\d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

cppfaq 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jinsuo_1986 的回复:]
谢谢楼上的回答!
我想要的是: 英文、数字、运算符号、括号
[/Quote]
正则表达式
@"^[A-Za-z0-9\+\-\*/%\(\)]+$"
sayoath 2009-04-04
  • 打赏
  • 举报
回复
在对应的列中加判断控件。。

然把把正则表达式写到里边。。。应该就实现了。。

111,126

社区成员

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

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

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