目前在开发一个MIS,不知道为什么DataGrid的ItemCommand事件会经常丢失,什么也没有动,过几天突然又好了,不知何故,
如果后台注册的事件经常丢失就改为前台注册吧
<asp:DataGrid OnItemCommand=""....>
不解
jf
不会吧,没有遇到过
有时候改动了页面布局后事件会丢失,但运行起后就不会了!
倒,有这样的事,汗哦。。。。
。NET环境问题吧!
是事件句柄丢失了吧?
在InitializeComponent里面,
private void InitializeComponent()
{
this.DataGridColumn.SelectedIndexChanged += new System.EventHandler(this.DataGridColumn_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
经常移动了控件位置就只剩下this.Load += new System.EventHandler(this.Page_Load);
其他的莫名其妙的丢失,找了好多,很多人说是vss的一个bug,
但把他们放在page_load里面就不会丢失,不知道楼主会不会是这个问题
我原来后台的事件也总是丢,搞不清楚为什么,问了ms也没解决
在psotback后是否重新绑定过数据,绑定后事件就会丢掉。
我碰过更邪的事,明明写好的一个TREEVIEW的程序,第一次运行后只要一修改ASPX文件,前台的代码就消失不见拉,呵呵,重新装一下FRAMWORK再杀杀毒后一切正常
这个问题我也遇到过,我好象动了页面之后事件就没有了,只好再点击一下事件了
是不是在Itemcommand上面加限制了 看看是否和代码有关
这个错误以前有一段时间公司出过,研究了比较长的时间,开始以为是使用了VSS导致的Bug,后来排除了,
不过有一点,多次测试,只有在3种情况下会发生这个事情:
1 符号不成对就保存
2 手工改动过“代码生成器。。。不要用。。编辑”里面那些内容,以后,在“设计界面”又对某控件添加事件委托。
3 某些时候在代码界面本来蓝色的关键字有一些变成和其他字一样黑的,并且你修改过后关闭时不会提示你保存,这个时候事件丢失很经常。这种情况要注意的是不要保存,退出,重新进,一般就好了。保存很可能事件委托就没了。
应该是bug。
顺便还有一点,对于Runat=Server的控件,如果实在有需要在html视图中编辑,注意某些属性最好“一次性”编辑,比如id,最好在记事本或其他地方写好,复制过来而不是一个一个打字进去。
个人经验,仅供参考
在vs.net 1.1架构上开发的控件在1.0上就会出现很多莫名其妙的错误,
很是纳闷
不会吧,没有遇到过
也遇到过这种情况,大抵是改动前台代码出现小错误后就突然消失了
改用VS2005
我也是常遇到这种事情的
我觉得是移动了控件的位置 如:以前是在一个表格里面现在移动到外面或者移动到form的外面都
会出现这样的问题,我有好多次发现这样的问题,建议首先调整界面风格,等界面都弄好了
再开始写方法逻辑应该没有什么问题了。
也有类是情况,没了就自己加上
这个应该不是VSS的bug,我们用的是SourceDepot,也有着这问题。应该没有多少人用过SourceDepot吧,MS自己内部用的,我们老板出来时代的
还有可能和你的机器环境有关
是浏览器的问题!
你是不是拖机工作了.
我在公司的时候用的是windows 2000在家用的是windows xp.把东西拿回去.
家里不能上网.没有设什么,DataGrid的ItemCommand事件.按扭一会好用一会不好用.
我用了拖机工作好用了,每一下都行.不知道你是不是和我有相同的问题?
我也经常碰到这种情况,不懂..................
是不是楼主的项目名称取得不好?
重装试试...
哈哈
连孟子大哥都" 不会吧,没有遇到过"
我就没什么发言权了..
嘿嘿,楼主仅仅是遇到过ItemCommand事件丢失么?
我还遇到过更邪门的呢~-_-
添加“按钮列”中的“编辑 更新 取消”,然后运行时遇到恐怖的BUG
绑定前4个表时,“更新”和“取消”功能正常
但是绑定第5个表显示时,“更新”的事件居然连到了“取消”的函数,取消的函数连到了“更新”的函数
所谓5个表,页面只有一个,为何会出现不同?难道表还会改变事件句柄不成?
看了好久都无法解决,后来只好我自己用模板列写事件-_-!
天!!
今天我也遇到 ItemCommand 事件丢失的怪事了!!
而且绝对比楼主遇到的要奇怪,ItemCommand 这个事件要在某种特定情况下才丢失~这里的“情况”是指运行时的情况~和源码,编译等等无关~
遇到过:主要原因是当你手动在
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
里面添加事件后,再对页面中的某个按钮添加事件或进行多项事件操作时,就会将上面的所有事件委托清空,得重新添加才行。如果你不手工添加而有开发环境自动产生委托,好象基本上不会丢失!
这种情况很常见,可以这条处理
方法一:人为移动事件注册代码
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
this.DataGrid1.ItemCommand+=new DataGridCommandEventHandler(DataGrid1_ItemCommand);//人为的移到这里,就不会再丢失了
}
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
//this.DataGrid1.ItemCommand+=new DataGridCommandEventHandler(DataGrid1_ItemCommand);系统默认加在这里,把它人为的移到上面
}
#endregion
方法二:写一个包含所有注册事件的方法,然后在load时调用,把在InitializeComponent中自动产生的事件删除,如
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
//系统默认加在这里,把它人为的删除
}
#endregion
private void BindEvents()
{
this.DataGrid1.ItemCommand+=new DataGridCommandEventHandler(DataGrid1_ItemCommand);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
private void Page_Load(object sender, System.EventArgs e)
{
BindEvents();
}
如果用vss做版本管控的话,不要编辑某个文件,此时提示要check out,如果这样check out也是造成事件丢失的一个原因,因为aspx,aspx.cs,aspx.resx三个文件有时只能check out出一个,而不是三个;如果要编辑某个文件,先check out,然后编辑,这样文件就被完全check out了
不知道是撒子回事
搞得俺一天到晚在找丢失的事件,可有时候明明委托都在,也没动它,就是不执行。我解决的办法
仅供参考:
1。如果委托事件不在老地方,嘿嘿不要我说了吧
2。如果委托事件在老地方,那就删除它,自己手写一次。
绝招:仅供参考
找个暴王龙级别的MM,对电脑来一次露齿微笑。电脑不死找我。
不只是绑定 按钮什么的事件也经常丢失
这么热的帖子阿,呵呵,楼主,在写程序的时候千万不要动页面自己生成的代码,如果在其中添加或删除了一些东西,即使你的代码是正确的,但是总是会出现一些预想不到的问题,我曾经遇到过,希望对你有帮助。
楼上几位说的都很有道理...可是我遇到的和楼主不同
我根本没动过页面自动生成的代码……
难道真是 singlepine(小山) 说的VSS的问题?
可我的程序是在某个特定情况下才丢失这个事件啊……下周我专开一个帖子说说
好像也遇到过,进来研究研究
我是VSS开发的,刚弄的时候,没注意界面,就拖上去,位置大概对了就行了,然后整个页面编程结束了,在开始调整页面。里面有些BUTTON的事件就不起作用了,点了就刷新一下页面,什么都不执行,然后在编辑状态下,双击按钮,进入代码编辑,不做任何事情。然后在重新编译下,又没问题了