问题描述
如题LinkButton已绑定点击事件根据条件想让按钮变灰并不能点击触发事件Enabled后该怎么实现?网上找找都是要点击触发的也是醉啦求大神指导本人新手。。。。。。。。急求!!!
解决方案
解决方案二:
enabled=false不就不能点了
解决方案三:
满足条件的就直接将LinkButton的enabled赋值为false就OK了
解决方案四:
你的描述清楚点,如果仅仅是已经设定了点击事件,然后按条件设置了Enable=false后,点击已经不会触发后台事件如果是js控制变灰,而不是enable=false,那你可以设置html的属性disabled=disabled
解决方案五:
引用2楼Lucky_502的回复:
满足条件的就直接将LinkButton的enabled赋值为false就OK了
那样在该按钮上凭空按还是会触发事件我弄得是弹出框依旧弹出啦
解决方案六:
引用3楼starfd的回复:
你的描述清楚点,如果仅仅是已经设定了点击事件,然后按条件设置了Enable=false后,点击已经不会触发后台事件如果是js控制变灰,而不是enable=false,那你可以设置html的属性disabled=disabled
protectedvoidgv1_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowType==DataControlRowType.DataRow){LinkButtonlb1=(LinkButton)e.Row.FindControl("LinkButton1");lb1.OnClientClick="OpenDiv('');returnfalse;";if(e.Row.Cells[].Text==""){lb1.Visible=false;}}}按钮是已经变灰但在页面上点还是会弹出框
解决方案七:
lb1.OnClientClick="OpenDiv('');returnfalse;";改成if(lb1.Enable){lb1.OnClientClick="OpenDiv('');returnfalse;";}试试
解决方案八:
引用5楼jessyjq的回复:
Quote: 引用3楼starfd的回复:
你的描述清楚点,如果仅仅是已经设定了点击事件,然后按条件设置了Enable=false后,点击已经不会触发后台事件如果是js控制变灰,而不是enable=false,那你可以设置html的属性disabled=disabledprotectedvoidgv1_RowDataBound(objectsender,GridViewRowEventArgse){if(e.Row.RowType==DataControlRowType.DataRow){LinkButtonlb1=(LinkButton)e.Row.FindControl("LinkButton1");lb1.OnClientClick="OpenDiv('');returnfalse;";if(e.Row.Cells[].Text==""){lb1.Visible=false;}}}按钮是已经变灰但在页面上点还是会弹出框
是lb1.Enabled=false;
解决方案:
你这样写法就算enable=true,貌似也不会回发执行后台代码吧?因为你执行了js的OpenDiv('');returnfalse;然后你的框是OpenDiv('')弹出的吧,如果不想改js代码,那么你的判断要改下LinkButtonlb1=(LinkButton)e.Row.FindControl("LinkButton1");if(e.Row.Cells[].Text==""){lb1.Enable=false;}else{lb1.OnClientClick="OpenDiv('');returnfalse;";}
解决方案:
我明白你的意思!!因为你Enabled的只是后台的事件,对于javascript事件它依旧可以响应是吧!!这个问题曾经也困扰我一段时间!!我的解决方法是这样的!!注意我的HTML代码HTMLCode<asp:LinkButtonID="LinkDataDelete"runat="server"Text="返还确认"PostBackUrl='<%#String.Format("~/Asp_Forms/frm_MachineTakeOut_Detail.aspx?Guid={0}&Opr={1}",Eval("Guid"),"C")%>'onclick="LcmdDataDelete_Click"></asp:LinkButton>
这是在GridView中的一个LinkButton,可以看到我的这个控件并没有onClientClick事件!!因为我把这个事件注册在后台!!C#Code((LinkButton)e.Row.FindControl("LinkDataDelete")).Attributes.Add("onclick","javascript:returnconfirm('您是否对此设备进行返还确认?')");
也就是说后台判断条件,条件成立的就为LinkButton注册一个前台事件!!如果条件不成立就不注册!!这样的话就能避免你说的这个问题了!!
解决方案:
引用9楼cxzzwb的回复:
我明白你的意思!!因为你Enabled的只是后台的事件,对于javascript事件它依旧可以响应是吧!!这个问题曾经也困扰我一段时间!!我的解决方法是这样的!!注意我的HTML代码HTMLCode<asp:LinkButtonID="LinkDataDelete"runat="server"Text="返还确认"PostBackUrl='<%#String.Format("~/Asp_Forms/frm_MachineTakeOut_Detail.aspx?Guid={0}&Opr={1}",Eval("Guid"),"C")%>'onclick="LcmdDataDelete_Click"></asp:LinkButton>这是在GridView中的一个LinkButton,可以看到我的这个控件并没有onClientClick事件!!因为我把这个事件注册在后台!!C#Code((LinkButton)e.Row.FindControl("LinkDataDelete")).Attributes.Add("onclick","javascript:returnconfirm('您是否对此设备进行返还确认?')");
也就是说后台判断条件,条件成立的就为LinkButton注册一个前台事件!!如果条件不成立就不注册!!这样的话就能避免你说的这个问题了!!
感谢大神解决了我的疑惑
解决方案:
解决方案:
引用10楼jessyjq的回复:
Quote: 引用9楼cxzzwb的回复:
我明白你的意思!!因为你Enabled的只是后台的事件,对于javascript事件它依旧可以响应是吧!!这个问题曾经也困扰我一段时间!!我的解决方法是这样的!!注意我的HTML代码HTMLCode<asp:LinkButtonID="LinkDataDelete"runat="server"Text="返还确认"PostBackUrl='<%#String.Format("~/Asp_Forms/frm_MachineTakeOut_Detail.aspx?Guid={0}&Opr={1}",Eval("Guid"),"C")%>'onclick="LcmdDataDelete_Click"></asp:LinkButton>这是在GridView中的一个LinkButton,可以看到我的这个控件并没有onClientClick事件!!因为我把这个事件注册在后台!!C#Code((LinkButton)e.Row.FindControl("LinkDataDelete")).Attributes.Add("onclick","javascript:returnconfirm('您是否对此设备进行返还确认?')");
也就是说后台判断条件,条件成立的就为LinkButton注册一个前台事件!!如果条件不成立就不注册!!这样的话就能避免你说的这个问题了!!
感谢大神解决了我的疑惑
当初我也一直在烦躁这个事呢