积极答复者
关于asp.net Button 控件

问题
-
请问各位大侠,怎么样让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 = <%# Eval("Eat_Info_Topics.Id")%>;__doPostBack('ctl00$cphListShow$rptInfoType$ctl01$btnEdit','')" id="ctl00_cphListShow_rptInfoType_ctl01_btnEdit" />
还有我怎么去掉自动给我生成的:
__doPostBack('ctl00$cphListShow$rptInfoType$ctl01$btnEdit','')
提示:我知道您一定建议我用客户端的<input type="button"/>,但现在我必须要用服务器端的Button控件,该怎么实现呢?自定义控件可以吗?怎么写呢?
答案
-
OnClientClick=<%# Eval("Id","'window.location.href ={0}")%>' />
或者从后台取出控件button 进行赋值
- 已标记为答案 肖小勇Moderator 2010年4月13日 3:45
- 取消答案标记 自由王者 2010年4月16日 2:52
- 已标记为答案 KeFang Chen 2010年4月16日 6:15
全部回复
-
不知道是不是我没有描述清楚,如:
<%@ 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(<%# Eval("Id") %>);__doPostBack('rpList$ctl00$btnModify','')" id="rpList_ctl00_btnModify" />
请问,怎样才能让OnClientClick属性值不要被编码?写一个自定义控件,集成asp.net Button控件可以实现吗?
-
OnClientClick=<%# Eval("Id","'window.location.href ={0}")%>' />
或者从后台取出控件button 进行赋值
- 已标记为答案 肖小勇Moderator 2010年4月13日 3:45
- 取消答案标记 自由王者 2010年4月16日 2:52
- 已标记为答案 KeFang Chen 2010年4月16日 6:15
-
请问,怎么把下面的代码去掉?
__doPostBack('rpList$ctl00$btnModify','')
不能去掉这个 如果去掉这个 你的按钮不能提交了 不用提交 可以换成html按钮
谢谢您的回答,我的这个按钮是一个自定义控件,继承自asp:button,里面包含一个名为“权限Id”的属性,是为了实现权限的,当有权限时显示按钮,否则不显示。所以,有的时候,我不想让它回传,除了设置UseSubmitBehavior="false",在自定义控件中怎样编码,才能不显示__doPostBack('rpList$ctl00$btnModify',''),请大家帮助我!o(∩_∩)o