none
关于asp.net Button 控件 RRS feed

  • 问题

  •  

    请问各位大侠,怎么样让asp.net Button 控件的OnClientClick 属性值不被编码呢?发送到客户端的HTML代码为:

    	<asp:Repeater ID="rptInfoType" runat="server">
                <ItemTemplate>
                    <tr class="listcon">
                        <td>
                            <input type="checkbox" name="chkItem" class="checkboxs" value="<%# Eval("Id") %>" />
                        </td>
                        <td>
                            <%# Eval("Name")%>
                        </td>
                        <td>
                            <asp:Button ID="btnEdit" UseSubmitBehavior="false" Text="修 改" runat="server" OnClientClick='window.location.href = <%# Eval("Id")%>' />
                        </td>
                    </tr>
                </ItemTemplate>
    	</asp:Repeater>

    发送到客户端的HTML代码为:

    <input type="button" name="ctl00$cphListShow$rptInfoType$ctl01$btnEdit" value="修 改" onclick="window.location.href = &lt;%# Eval(&quot;Eat_Info_Topics.Id&quot;)%>;__doPostBack('ctl00$cphListShow$rptInfoType$ctl01$btnEdit','')" id="ctl00_cphListShow_rptInfoType_ctl01_btnEdit" />

     

    还有我怎么去掉自动给我生成的:

    __doPostBack('ctl00$cphListShow$rptInfoType$ctl01$btnEdit','')
    提示:我知道您一定建议我用客户端的<input type="button"/>,但现在我必须要用服务器端的Button控件,该怎么实现呢?自定义控件可以吗?怎么写呢?
    2010年4月12日 7:33

答案

全部回复

  • 不知道是不是我没有描述清楚,如:

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestButton.aspx.cs" Inherits="WebUI.TestButton" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
        <script language="javascript" type="text/javascript">
            function ModifyThis(Id)
            {
                window.location.href = "modifyArticle.aspx?Id=" + Id;
                return false;
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater ID="rpList" runat="server">
                <ItemTemplate>
                    ID:<%# Eval("Id") %><br />
                    名称:<%# Eval("Name") %><br />
                    <asp:Button ID="btnModify" runat="server" UseSubmitBehavior="false" text="修改" OnClientClick='ModifyThis(<%# Eval("Id") %>);' />
                </ItemTemplate>
                <SeparatorTemplate>
                    <br />
                    <hr />
                    <br />
                </SeparatorTemplate>
            </asp:Repeater>
        </div>
        </form>
    </body>
    </html>
    
    后台代码:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebUI
    {
        public partial class TestButton : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack)
                {
                    List<UserInfo> list = new List<UserInfo>() { new UserInfo() { Id = 1, Name = "张三" }, new UserInfo() { Id = 2, Name = "李四" } };
    
                    this.rpList.DataSource = list;
                    this.rpList.DataBind();
                }
            }
        }
    }
    
    发送到客户端的代码为:
    <input type="button" name="rpList$ctl00$btnModify" value="修改" onclick="ModifyThis(&lt;%# Eval(&quot;Id&quot;) %>);__doPostBack('rpList$ctl00$btnModify','')" id="rpList_ctl00_btnModify" />
    请问,怎样才能让OnClientClick属性值不要被编码?写一个自定义控件,集成asp.net Button控件可以实现吗?
    2010年4月12日 8:11
  • OnClientClick=<%# Eval("Id","'window.location.href ={0}")%>' />

    或者从后台取出控件button 进行赋值 

    2010年4月12日 8:31
  • OnClientClick = <%# Eval("Id","'window.location.href ={0} ")%>' />

    或者从后台取出控件button 进行赋值 


    谢谢,可以了! mldark,您太牛了!
    2010年4月12日 8:55
  • 请问,怎么把下面的代码去掉?

     

    __doPostBack('rpList$ctl00$btnModify','')

    2010年4月12日 9:01
  • 学了一招,前两天刚好遇到过这个问题,郁闷得要死。

    后来我改成了html控件!

    2010年4月12日 9:03
  • 请问,怎么把下面的代码去掉?

     

     

    __doPostBack('rpList$ctl00$btnModify','')
    
    

     


    不能去掉这个  如果去掉这个  你的按钮不能提交了  不用提交 可以换成html按钮

     

    2010年4月12日 13:53
  • 请问,怎么把下面的代码去掉?

     

     

    __doPostBack('rpList$ctl00$btnModify','')

     


    不能去掉这个  如果去掉这个  你的按钮不能提交了  不用提交 可以换成html按钮

     


    谢谢您的回答,我的这个按钮是一个自定义控件,继承自asp:button,里面包含一个名为“权限Id”的属性,是为了实现权限的,当有权限时显示按钮,否则不显示。所以,有的时候,我不想让它回传,除了设置UseSubmitBehavior="false",在自定义控件中怎样编码,才能不显示__doPostBack('rpList$ctl00$btnModify',''),请大家帮助我!o(∩_∩)o
    2010年4月16日 2:28