编辑DataGridView问题 我用VS2005,在DataGridView中有一列要求输入数字,我直接在DataGridView中添加和修改数据,有什么方法能实时的判断我那一列中的单元格输入的是不是数字?我发现DataGridView上的单元格内容改变的判断只有焦点移到别的cell里面去的时候才会触发,有没有方法在判断的时候不用离开这个单元格,能实现那种类似于textbox中的textchanged这个方法呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 protected void GridViewOrderLine_RowDataBound(object sender, GridViewRowEventArgs e) { //修改编辑框样式 if ((e.Row.RowState & DataControlRowState.Edit) != 0) { TextBox tb1 = (TextBox)e.Row.Cells[3].Controls[0]; tb1.Attributes.Add("onkeypress", "var k=event.keyCode;if ( ( (k==46) || (k<=57 && k>=48) ) && isMoney(this.value,k) ) return true;else return false;"); tb1.Attributes.Add("onpaste", "return false;"); tb1.Attributes.Add("maxlength", "10"); tb1.Attributes.Add("class", "TextBox"); tb1.Width = 70; tb1.Text = System.Math.Round(double.Parse(tb1.Text), 2).ToString(); } } 在录入的过程中若不是数字或“.”不可写private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar == 8 || e.KeyChar >= 48 && e.KeyChar <= 57 || e.KeyChar == '.')) e.Handled = false; else e.Handled = true; } 如果是textbox,我当然知道了怎么做了,可这是DataGridView中的某一列啊,。 在那个“KeyPress”事件里面…… DataGridView中的“KeyPress”怎么没有反应啊?现在有个问题是 如果我在数字那列输入非数字,程序既不报错,也不往下执行了,就定在了那里,真晕了 我的DataGridView中的“KeyPress”怎么没有反应啊??我没在KeyPress下写的 直接在DataError下写的。 //验证单元格输入是否为数字或小数点private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e){ DataGridView dgv = (DataGridView)sender; //把不为数字的Column除去,判断剩余的Column if (dgv.Columns[e.ColumnIndex].Name != "lbmc" && dgv.Columns[e.ColumnIndex].Name!= "lbid"&& dgv.Columns[e.ColumnIndex].Name != "sbmc" && dgv.Columns[e.ColumnIndex].Name!= "sbid") { for (int i = 0; i < e.Value.ToString().Length; i++) { string f = e.Value.ToString().Substring(i, 1).ToString().Trim(); if (f != "1" && f != "2" && f != "3" && f != "4" && f != "5" && f != "6" && f != "7" && f != "8" && f != "9" && f != "0" && f != ".") { e.Value = ""; } } } e.ParsingApplied = true;} e.ParsingApplied = true; 这句话有效果吗?能不能让程序出错的时候别执行dataerror事件 当输入非数字或小数点时 e.Value = ""; 什么也不写入若是数字或小数点则执行 e.ParsingApplied = true; 写入当前键值 文本信息提取 socket 监听端口(端口被占用) 扎整? 求算法 类库中定义一个方法,能不能用button类型做为参数 C#中用SaveFileDialog类保存文件,如何另外增加字符编码(ANSI、UTF-8等)选项 msil会暴露源码吗? 光标在form上的绝对位置怎么写啊? ·急!!!有关Datagrid问题 大家来看一下 Winform中更改数据后对DataGrid的重新邦定问题 我使用 Mp3Play.ocx 播放 mp3 文件,但是失败了,怎么办??? 怎么才能随机生成 9位 唯一的流水号? UpdatePanel1与Response.End();问题?
protected void GridViewOrderLine_RowDataBound(object sender, GridViewRowEventArgs e)
{
//修改编辑框样式
if ((e.Row.RowState & DataControlRowState.Edit) != 0)
{
TextBox tb1 = (TextBox)e.Row.Cells[3].Controls[0];
tb1.Attributes.Add("onkeypress", "var k=event.keyCode;if ( ( (k==46) || (k<=57 && k>=48) ) && isMoney(this.value,k) ) return true;else return false;");
tb1.Attributes.Add("onpaste", "return false;");
tb1.Attributes.Add("maxlength", "10");
tb1.Attributes.Add("class", "TextBox"); tb1.Width = 70;
tb1.Text = System.Math.Round(double.Parse(tb1.Text), 2).ToString();
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar == 8 || e.KeyChar >= 48 && e.KeyChar <= 57 || e.KeyChar == '.'))
e.Handled = false;
else
e.Handled = true; }
private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
//把不为数字的Column除去,判断剩余的Column
if (dgv.Columns[e.ColumnIndex].Name != "lbmc" && dgv.Columns[e.ColumnIndex].Name!= "lbid"&& dgv.Columns[e.ColumnIndex].Name != "sbmc" && dgv.Columns[e.ColumnIndex].Name!= "sbid")
{
for (int i = 0; i < e.Value.ToString().Length; i++)
{
string f = e.Value.ToString().Substring(i, 1).ToString().Trim();
if (f != "1" && f != "2" && f != "3" && f != "4" && f != "5" && f != "6" && f != "7" && f != "8" && f != "9" && f != "0" && f != ".")
{
e.Value = "";
}
}
}
e.ParsingApplied = true;
}
若是数字或小数点则执行 e.ParsingApplied = true; 写入当前键值