比如说
我有一个发表回复博文的用户控件
上面有几个textbox和一个button
然后我在显示文章的页面上调用这个用户控件
我该怎么做才能实现如博客园一样的提交之后无刷新重新绑定回复呢
如果是在这个用户控件里直接写进数据库 那我在显示文章上面的另外一个用户控件
----显示回复的控件如何知道什么时候重新绑定呢
写入数据库后,有个JS处理返回状态,你在返回状态里判断.
你可以看本页源代码,看如下一段:
<input type="button" id="btnAnswer" name="btnAnswer" value="提交回答" onclick="doAnswer();" />
然后再看doAnswer()方法
Code
function doAnswer()
{
var ID = document.getElementById("lbContentID").value;
var Content = tinyMCE.get('txtAnswer').getContent();
var strComment = document.getElementById("Comment_new").innerHTML;
//alert(ID);
//alert(Content);
if(Content == ""){
alert("回答不能为空!");
return;
}
PageClass.InsertAnswer(ID,Content,strComment,do_Answer_callback);
}
当然,它的pageClass是在<script type="text/javascript" src="/ajax/common.ashx"></script><script type="text/javascript" src="/ajax/ASP.PageClass,App_Web_dzbskono.ashx"></script>中,也就是将数据传入后台处理,然后返回一个值,用下面函数处理
Code
function do_Answer_callback(response) {
if (response.value != "-1") {
document.getElementById("Answer_new").innerHTML = response.value;
tinyMCE.get('txtAnswer').setContent('');
document.getElementById("answer_post").style.display = "none";
document.getElementById("reply_post").style.display = "";
}
else {
document.getElementById("Answer_new").innerHTML = "发生了错误!"
}
}
最简单的办法就是将两个usercontrol 放入同个update panel里边。那么你就无须再做其它额外的工作了,在提交按钮的onclick事件将数据insert到数据库中,然后取出绑定到,另一个usercontrol数据集控件中。
当然如果你要自己使用纯ajax技术的话(比如asp.net ajax客户端调用web service,通过web service 来insert 记录和取出记录),那么取出后,我们仍需要能过javascript将取回的值的自己来构造table来显示,也就无所谓说的绑定到另一个user control的数据集控件上去了。这样做虽复杂度增加了,但性能上也得到了一定的提升。