DataGrid1_ItemCommandif(e.CommandName=="Update")
{
TextBox input_id = null;
input_id = (TextBox)e.Item.FindControl("txtId");
if(Int32.Parse(input_id.Text)<=255&&Int32.Parse(input_id.Text)>=0)
....
}
{
TextBox input_id = null;
input_id = (TextBox)e.Item.FindControl("txtId");
if(Int32.Parse(input_id.Text)<=255&&Int32.Parse(input_id.Text)>=0)
....
}
解决方案 »
- Mapxtreme 如何实现图元大小跟随地图大小变化?
- 关于目录的一些疑问
- 请各位大侠帮忙☆★C#获取系统颜色后,转换报错★☆----急!
- 数据库设计
- 将下面VB代码转化为C#代码
- C# timer问题
- 领导下了任务:要在公司内实现短信系统,这可愁死我了,100分相赠,给一个方案,硬件要用什么?软件要怎么做呢?
- c#怎样用request获得传过来的xml流?
- (请问)使用C#,简单继承了System.Windows.Forms.Button,实现了一个自定义的Button,为何在测试程序中无法响应click事件?
- C#管理员权限以及多进程的问题
- 如何把数据传送到另外一个程序?
- 做分布式开发,用的是oracle数据库,在程序中调用的是存储过程,为什么我在中间业务层定义一个如下的[WebMethod]方法不好用?
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{ DataGridCell currentCell =this.dataGrid1.CurrentCell;
string currentCellText="";
currentCellText=this.dataGrid1[currentCell.RowNumber,currentCell.ColumnNumber].ToString().Trim();
//if(byte.Parse(currentCellText,System.Globalization.NumberStyles.AllowHexSpecifier)<
if(currentCellText=="")
{
MessageBox.Show("不能为空");
this.dataGrid1[currentCell.RowNumber,currentCell.ColumnNumber]=0;
}
}
但是不行!
我觉得可能实现机会大点
DATAGRID好象没有提供输入触发时间 不过或许可以自定义事件
只是一个思路 呵呵
可是有什么办法,我也在考虑呢。。再找找看。。
----------------------
www.517yn.net
DataGrid本身可用的事件可的很少.
也难怪,它本身主要是提供显示数据的
public int nPreY = -1;
private bool bChangeCell = true;datagrid的下面这个事件里处理:
private void DataGrid_CurrentCellChanged(object sender, System.EventArgs e)
{
if (bChangeCell ==true)
{
if(nPreX!=this.CurrentCell.RowNumber||nPreY!=this.CurrentCell.ColumnNumber)
{
if( nPreX==-1 && nPreY==-1 )
{
nPreX = this.CurrentCell.RowNumber;
nPreY = this.CurrentCell.ColumnNumber;
return;
}
//下面就是判断条件,可以根据具体情况进行修改。这里是定位每个CELL里的宽度必须不小于5
if(this[nPreX,nPreY].ToString().Length < 5)
{
MessageBox.Show("Error");
bChangeCell = false;
//这个操作会再一次触发本事件,所以在前面加了一个BOOL来判断
this.CurrentCell = new DataGridCell(nPreX,nPreY);
return;
}
else
{
nPreX = this.CurrentCell.RowNumber;
nPreY = this.CurrentCell.ColumnNumber;
}
}
}
else
bChangeCell =true;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
若要数字在0~255之间,就这样改:if(Check(nPreX)==false)
...
bool private Check(int X)
{
try{
int x = int.parse(this[nPreX,2].ToString());
~~~~~~~第三列
if (x>0&&x<255)
return true;
else return false;
}
catch(FormatException e)
{return false;}
}
{
MessageBox.Show(this.dataGrid1[nPreX,nPreY].ToString());
nPreX = this.dataGrid1.CurrentCell.RowNumber;
nPreY = this.dataGrid1.CurrentCell.ColumnNumber;
MessageBox.Show(nPreX.ToString(),nPreY.ToString());
}
else
{
nPreX = this.dataGrid1.CurrentCell.RowNumber;
nPreY = this.dataGrid1.CurrentCell.ColumnNumber;
}我的nPreX和nPreY的初始值和大虾不太一样,我的不是-1,是0
但是我的程序运行时没有出现这种情况啊。
我在最后一行新添的记录里触发事件,但是没有出现你的说的情况?
会报出如下错误
未处理的“System.IndexOutOfRangeException”类型的异常出现在 system.windows.forms.dll 中。其他信息: 索引 2 处没有值。这时候,我的datagrid里面有两条纪录,焦点在第三条记录上,该纪录默认为(null)。
而nPreX的值为“2”,但是datagrid根本没有索引为2的纪录,所以报这个错误。