js调用后台程序绑定repeater,但是在使用这个repeater中的数据时,其记录值为0

解决方案 »

  1.   

    我在描述一下我的问题:在后缀名为.aspx中写了一个给repeater绑定数据源的函数,在aspx页面中通过js调用这个函数,给repeater绑定了数据,然后又出发了一个button事件,这个事件操作repeater,读取repeater中的记录,但此时repeater.items.Count为0,不知为什么
      

  2.   

    你js怎么调用后台函数的?把你绑定repeater的代码发上来。
      

  3.   

    js代码function GetName()
    {
    var id1=<%=showColumn()%>;
    }
    后台函数showColumn()
    {
      repeater绑定数据源。
    }
      

  4.   

    你alert一下id1,我觉得应该是null,哪怕不是null,它也只是一个object对象,并不能达到你调用后台方法的目的。这种设计是不可取的,要不就不要用repeater,改用ajax的方式,调用后台方法,获得数据库的数据,然后,用js操作dom元素,生成二维表格;要不就全部用后台按钮,使用后台方法来更新数据。如果你真心想要js控制按钮,按钮点击后更新数据,你可以这样做。
    页面上设置两个按钮,分别如下:
    <input type="button" id="b1" value="button1" onclick="document.getElementById('b2').click();" />
    <asp:Button ID="b2" runat="Server" Text="Button2" Visible="false" OnClick="Button2_Click" />b1是一个客户端按钮,b2是个服务端按钮,b2不可见,并且b2有一个后台事件,在后台方法中刷新repeater的数据。
    点击b1按钮,触发b2按钮的点击,这样可以达到你的要求吧!甚至,你还可以在b1的客户端点击事件中加一些逻辑判断,或者弹出确认对话框,等等:
    <input type="button" id="b1" value="button1" onclick="if(confirm('确认?')){ document.getElementById('b2').click();}" />
      

  5.   

    楼上方法也行,跟我前一种方法的结果是一样的,还是0;大体是这样的,我有一个下拉框,譬如选项:1,2,3.选择1,或着2,或者3会让后台的一个函数执行repeater绑定一次,但是我不希望刷新页面,所以用到了js去调用后台这个函数执行。接着,我又通过另一个button触发事件,然后获取repeater的items.count,结果返回的是0,不知为何。你上面的方法我试了,结果一样。帮忙想想是什么原因,我现在把我的测试代码发出来,望能帮我解决。谢谢
      

  6.   

    后台程序,关于数据源没有贴出来。 
    protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            int id = Repeater1.Items.Count;
            Response.Write(id.ToString());
        }
        protected string showColumn()
        {
            
            Repeater1.DataSource = "一个数据源";
            Repeater1.DataBind();
            return Repeater1.Items.Count.ToString();
        }
    前台:
     <script type="text/jscript">
            function getname() {
             
            var id="<%=showColumn() %>";
           
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
               <%#Eval("AdminID")%>
            </ItemTemplate>
            </asp:Repeater>
             <asp:Button ID="Button1" runat="server" Text="Button"  
                OnClientClick=" getname()" onclick="Button1_Click" />
        </div>
        </form>
    </body>