先上图片,然后我再说我的思路如图所示,顶部是一个Repeater,然后做了数据绑定。然后下面是几个input text还有一个input button.现在,我这样,调用JavaScript脚本,把数据post到一个ashx里面插入数据库,然后返回值,
我打开数据库查询,发现,插入成功了。但是,这个时候,上面的Repeater需要重新绑定吗?如果需要,如何在页面不刷新的情况下重新绑定?
如果不需要的话,用JavaScript添加刚才的那几个数据到页面上,给用户展示?第一种方式,我真的不会。第二种,我尝试着用JavaScript添加了几条数据,但是,第二次添加的时候就把第一次的覆盖了。
尴尬啊纠结啊求指点,求代码,求DEMO只有可怜的72分了,各位大师不要介意。

解决方案 »

  1.   

    肯定需要重新赋值,你页面没刷新他不会到后台去取数据
    用javascript给控件赋值就行了吧
      

  2.   

    楼主,如果你的开发工具是vs 2008的话,我建议你百度一下:
    AJAX Extensions控件栏里的UpdatePanel这个控件的使用对于你使用了数据绑定控件的,我建议你用这个官方控件好点,当然,页面的编码要是utf-8你只要用一个UpdatePanel控件(有点像个大容器)把那个数据绑定控件和其它一些按钮绑定再一起,就能实现你想要的效果。你自己百度一下这个控制的用法,就是配置几个属性罢了,不难。
    第二种方式,也就是传说中的Ajax方式,纯手工方式的,这种方式要求是,你的不使用绑定控件来显示数据,而是改成后台使用逻辑语言拼凑出原绑定控件显示效果的那种HTML源码,也就是说,你代码手动构造这些用于显示的全部HTML代码,然后赋值给前台的一个DIV的innerHTML属性(该DIV你自己加个runat=server属性)然后,你在使用Ajax新添加数据后,你那边在插入完新数据后,接着查询最新的数据列表,然后同样道理,拼凑成最终要在前台显示的HTML源码,返回来给页面,你JS监控函数捕捉到这些返回值后,只要JS方式更新一下那个DIV的innerHTML属性就可以了,这样也能达到你要的效果
      

  3.   

    UpdatePanel 可以做到无刷新效果 ,
      

  4.   

    你的AJAX的回调函数拼接一下HTML输出就行
      

  5.   

    需要从新绑定。用jquery ajax源码或者function addComments(){
        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);
                }
            });
        }
    }参考
      

  6.   

    jquery ajax  简单些或者就直接拖一个 无刷新面板
      

  7.   

    先说下你的  首先 你的Repeater 应该是 解析成  ul  li的对吧?  当你无刷新执行成功后 用js添加一个 li不就行了 不用重新绑定的
      

  8.   

    我这有个现成的demo 你可以参考~~   <script type="text/javascript">
            $(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 />
    &nbsp;<textarea id="txtComment" cols="20" name="S1" rows="2"></textarea><br />
            <input id="btnPost" type="button" value="提交" />[/code]
      

  9.   


     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");
            }
      

  10.   

    $.ajax 提交数据 到指定页面。返回数据后, 在一个div中重新输出。就这么简单。
      

  11.   

    用jquery ajax吧,添加完数据后,第一种:再查询展示的数据并返回给前台(建议json返回),前台js处理该数据,重新加载repeater源,第二种,添加成功后附加append进repeater所在表格或div等容器
      

  12.   

    UpdatePanel控件吧,简单,好用, <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Repeater ID="Repeater2" runat="server">
                     内容.......
                    </asp:Repeater>
                </ContentTemplate>
            </asp:UpdatePanel>别忘了:   <asp:ScriptManager></asp:ScriptManager>
      

  13.   


    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>
     
      

  14.   

    我觉得你还是放弃那个repeater,改用html table来搞定,AJAX,你的这种操作,根本无法用到服务器端得控件啊。
    updatepanel倒是你的最好的选择。