做简单的事,做简单的教程

专注移动开发。本博客教程采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可...

<ASP.NET>给服务器控件赋值

从我的网易博客移动。。。。。


在ListView中Itemtemplate添加了个服务器控件button。经过服务器渲染后。就很难取到该button的ID。所以在ItemDataBound中给该button绑定ID数据

 btn.Attributes["MyId"] = btn.ClientID;
btn.Attributes["onclick"] = "check(" + slid + ",this);";//绑定了个onclick事件,this也是可以作为当前btn的ID使用



前台javascript。

写了个ajax,为了在匿名函数出取到button的ID。在function check(slid, src)中定义了

 var myid = $(src).attr("MyId");



然后在post中的匿名函数发现怎么也改变不了button的状态。。

 $("#" + myid).val("已签到");
 $("#" + myid).attr("disabled", "disabled");


尝试了下,发现是可以取到button的值的。但是却改变不了。

 $("#" + myid).val("已签到");
 $("#" + myid).attr("disabled", "disabled");


alert("yes");//添加这句测试发现,弹出这个后,button的状态改变了。但是页面却在进行post。post完成后,button状态恢复原来的样子。

所以。解决button不进行post才是正道。因为是服务端控件。所以每个控件都会进行_dopostBack;
在button中添加属性UseSubmitBehavior="false";

 <asp:Button  runat="server" UseSubmitBehavior="false" ID="SignUp" Text = "签到"/>

 

测试发现还是进行post。查看资料发现还要禁用_dopostBack;所以在javascript中的check方法最后添加

 

_dopostBack(myid,"");


_doPostBack带有两个参数,eventTarget是标识将要引发页面PostBack的控件ID,eventArgument参数提供了在引发页面PostBack事件时所带的额外参数。

到此。改变服务端控件就完成了。汗一个。这个小问题折腾了两三天。。。。

阅读更多
个人分类: ASP.NET编程
上一篇&lt;C++&gt;error LNK2001错误
下一篇SQL取系统的当前日期 &lt;转载&gt;
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭