读书人

在事件中给控件传js参数事件时参数quot;#039;quot;

发布时间: 2012-09-01 09:33:03 作者: rapoo

在事件中给控件传js参数事件时参数"'"被html格式化的处理方法
在listview的created事件中,给dropdownlist传onchange事件

C# code
TextBox tbUserName=(TextBox)e.Item.FindControl("tbUserName")ddl.Attributes["onchange"]="myonchange(this,'"+tbUserName.ClientID+"')"

但onchange事件执行不成功,看浏览器生成的源码发现tbUserName.ClientID生成的字符串的前后两个'都变成了html字符,用HttpServerUlity.decode转换都不行,我用的是vs2010,但我看视频时别人用vs2008好象没有出现问题,或者是IIS内部进行了处理,请教该如何处理。

[解决办法]
'会变成#&39之类的,不影响参数的使用的,

另外,请换成ItemDataBound事件,ItemCreate事件传的id是错误的

例子
HTML code
<%@ Page Language="C#" EnableViewState="true" Debug="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">    protected void Page_Load(object sender, EventArgs e)    {        if (!Page.IsPostBack)        {            System.Data.DataSet ds = new System.Data.DataSet();            System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");            System.Data.DataRow dr;            dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));            dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));            dataTable1.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["UserId"] };            for (int i = 0; i < 8; i++)            {                dr = dataTable1.NewRow();                dr[0] = i;                dr[1] = "【孟子E章】" + i.ToString();                dataTable1.Rows.Add(dr);            }            Rp1.DataSource = dataTable1;            Rp1.DataBind();        }    }    protected void Rp1_ItemCreated(object sender, ListViewItemEventArgs e)    {        if (e.Item.ItemType == ListViewItemType.DataItem)        {            TextBox tbUserName = (TextBox)e.Item.FindControl("tbUserName");            DropDownList ddl = e.Item.FindControl("DropDownList1") as DropDownList;            ddl.Attributes["onchange"] = "myonchange(this,'" + tbUserName.ClientID + "')";        }    }    protected void Rp1_ItemDataBound(object sender, ListViewItemEventArgs e)    {        if (e.Item.ItemType == ListViewItemType.DataItem)        {            TextBox tbUserName = (TextBox)e.Item.FindControl("tbUserName");            DropDownList ddl = e.Item.FindControl("ddl") as DropDownList;            ddl.Attributes["onchange"] = "myonchange(this,'" + tbUserName.ClientID + "')";        }    }</script><html xmlns="http://www.w3.org/1999/xhtml"><head>    <script type="text/javascript">        function myonchange(s, t) {            alert(document.getElementById(t).value);        }    </script></head><body>    <form id="form1" runat="server">    <asp:ListView ID="Rp1" runat="server" OnItemCreated="Rp1_ItemCreated" OnItemDataBound="Rp1_ItemDataBound">        <ItemTemplate>            <div>                <asp:TextBox ID="tbUserName" runat="server" Text='<%#Eval("UserName") %>'></asp:TextBox>                <asp:DropDownList ID="ddl" runat="server">                    <asp:ListItem>AA</asp:ListItem>                    <asp:ListItem>BB</asp:ListItem>                </asp:DropDownList>                <asp:DropDownList ID="DropDownList1" runat="server">                    <asp:ListItem>AA</asp:ListItem>                    <asp:ListItem>BB</asp:ListItem>                </asp:DropDownList>            </div>        </ItemTemplate>    </asp:ListView>    </form></body></html> 

读书人网 >asp.net

热点推荐