<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
    <li><asp:Button CssClass="btn" runat="server" Text='<%#Eval("Text") %>' OnClick='<%#Eval("Click") %>' /></li>
</ItemTemplate>
</asp:Repeater>为什么生成出来的HTML代码变成:
<li><input type="submit" name="Repeater1$ctl00$ctl00" value="修改订单" onclick="UpdateOrder_Click;" class="btn" /></li>                        
<li><input type="submit" name="Repeater1$ctl01$ctl00" value="确认订单" onclick="OkOrder_Click;" class="btn" /></li>
<li><input type="submit" name="Repeater1$ctl02$ctl00" value="取消确认" onclick="CancelOrder_Click;" class="btn" /></li>注意onclick="UpdateOrder_Click;",这个分号是自动加上的,正因为这个分号,导致事件用不了.请问大家这该怎么解决?

解决方案 »

  1.   

    UpdateOrder_Click这个是不是一个c#里面的事件处理函数啊?如果是js的,函数不是应该带括号的吗?
      

  2.   

    或者可能你的input没有加runat=server
      

  3.   

    把><asp:Button CssClass="btn" runat="server" Text='<%#Eval("Text") %>' OnClick='<%#Eval("Click") %>' />换成<input runat="server" value='<%#Eval("Text") %>' onclick='<%#Eval("Click") %>'/>试下,按理说,onclick这个单击事件不应该从数据库里面读取数据。
      

  4.   

    那是事件处理方法是后台的方法.
    包括这个button空间也是服务器的<asp:Button />控件
      

  5.   

    OnClick='<%#Eval("Click") %>' 服务器控件的事件,还可以这样写吗?我有一个想法,不知道可行不?楼主可以试试的
    <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <li><asp:Button CssClass="btn" runat="server" Text='<%#Eval("Text") %>' CommandName="<%#Eval("Click") %>" CommandArgument='<%# Eval("你要传递的参数")%>' OnCommand="btn_Command"/></li>
    </ItemTemplate>
    </asp:Repeater>后台代码:
    protected void btn_Command(object source, CommandEventArgs e)
    {
       string id = e.CommandArgument.ToString();
       if (e.CommandName == "UpdateOrder_Click")
       {
           //dosomething
       } 
       else if (e.CommandName == "OkOrder_Click")
       {
           //dosomething
       }
       else if (e.CommandName == "CancelOrder_Click")
       {
           //dosomething
       } 
       else
       {
           //dosomething
       }
    }