先上图片,然后我再说我的思路如图所示,顶部是一个Repeater,然后做了数据绑定。然后下面是几个input text还有一个input button.现在,我这样,调用JavaScript脚本,把数据post到一个ashx里面插入数据库,然后返回值,
我打开数据库查询,发现,插入成功了。但是,这个时候,上面的Repeater需要重新绑定吗?如果需要,如何在页面不刷新的情况下重新绑定?
如果不需要的话,用JavaScript添加刚才的那几个数据到页面上,给用户展示?第一种方式,我真的不会。第二种,我尝试着用JavaScript添加了几条数据,但是,第二次添加的时候就把第一次的覆盖了。
尴尬啊纠结啊求指点,求代码,求DEMO只有可怜的72分了,各位大师不要介意。
我打开数据库查询,发现,插入成功了。但是,这个时候,上面的Repeater需要重新绑定吗?如果需要,如何在页面不刷新的情况下重新绑定?
如果不需要的话,用JavaScript添加刚才的那几个数据到页面上,给用户展示?第一种方式,我真的不会。第二种,我尝试着用JavaScript添加了几条数据,但是,第二次添加的时候就把第一次的覆盖了。
尴尬啊纠结啊求指点,求代码,求DEMO只有可怜的72分了,各位大师不要介意。
用javascript给控件赋值就行了吧
AJAX Extensions控件栏里的UpdatePanel这个控件的使用对于你使用了数据绑定控件的,我建议你用这个官方控件好点,当然,页面的编码要是utf-8你只要用一个UpdatePanel控件(有点像个大容器)把那个数据绑定控件和其它一些按钮绑定再一起,就能实现你想要的效果。你自己百度一下这个控制的用法,就是配置几个属性罢了,不难。
第二种方式,也就是传说中的Ajax方式,纯手工方式的,这种方式要求是,你的不使用绑定控件来显示数据,而是改成后台使用逻辑语言拼凑出原绑定控件显示效果的那种HTML源码,也就是说,你代码手动构造这些用于显示的全部HTML代码,然后赋值给前台的一个DIV的innerHTML属性(该DIV你自己加个runat=server属性)然后,你在使用Ajax新添加数据后,你那边在插入完新数据后,接着查询最新的数据列表,然后同样道理,拼凑成最终要在前台显示的HTML源码,返回来给页面,你JS监控函数捕捉到这些返回值后,只要JS方式更新一下那个DIV的innerHTML属性就可以了,这样也能达到你要的效果
if($.formValidator.pageIsValid()){
$.ajax({
type:"POST",
url:"proc_comments.asp",
data:"action=addcomments&id=44&comm_user="+escape($("#comm_user").val())+"&comm_content="+escape($("#comm_content").val()),
success:function(){
getComments(1);
}
});
}
}参考
$(function() {
$("#btnPost").click(function() {
$.post("PostComment.ashx", { "msg": $("#txtComment").val() },
function(data, status) {
if (status != "success") {
alert("发表评论失败,请重试!");
return;
}
if (data == "ok") {
var newComment = $("<li>评论日期:" + new Date() + ",IP:自己,内容:" + $("#txtComment").val() + "</li>");
$("#ulComment").append(newComment);
alert("评论发表成功");
}
else if (data == "forbid") {
alert("请文明用语!修改后再发布!");
}
else {
alert("评论发表内容有问题!");
}
});
}); });
</script>
[code=HTML] <ul id="ulComment">
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<ItemTemplate><li>评论日期:<%#Eval("PostDate") %>,IP:<%#Eval("IPAddr") %>,内容:<%#Eval("Msg") %></li></ItemTemplate>
</asp:Repeater>
</ul>
<br />
<br />
<textarea id="txtComment" cols="20" name="S1" rows="2"></textarea><br />
<input id="btnPost" type="button" value="提交" />[/code]
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string msg = context.Request["msg"];
if (msg.Contains("TMD") || msg.Contains("去死"))
{
context.Response.Write("forbid");
return;
}
new T_PostsTableAdapter().Insert(context.Request.UserHostAddress, msg, DateTime.Now);
context.Response.Write("ok");
}
<ContentTemplate>
<asp:Repeater ID="Repeater2" runat="server">
内容.......
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>别忘了: <asp:ScriptManager></asp:ScriptManager>
UpdatePanel控件吧,简单,好用,
C# code
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Repeater ID="Repeater2" runat="server">
内容.......
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel><asp:ScriptManager></asp:ScriptManager>
updatepanel倒是你的最好的选择。