如题。。
就是我有个模板页名为“masterTest”,又有一个自定义控件名为“usercontrolTest”,这个自定义控件有个“textboxTest”文本框吧。。
自定义控件是放在模板页里面的。
我在内容页里面怎么找出textboxTest的值噢?
就是我有个模板页名为“masterTest”,又有一个自定义控件名为“usercontrolTest”,这个自定义控件有个“textboxTest”文本框吧。。
自定义控件是放在模板页里面的。
我在内容页里面怎么找出textboxTest的值噢?
你是在什么时候要他的值?
后台,还是前台?
我可能说得不是很清楚。。再说说。我是在使用了模板页的内容页的后台去找这个textboxTest控件的啊
就可以用以下语句获取到用户控件中的TextBox TextBox tb = (TextBox)uc1.FindControl("TextBox1");
如果你的用户控件是在母版页面上面的话
你需要先找到 用户控件 然后从用户控件中找到 下拉框例如下面的例子 UC2 是母版页中用户控件的ID WebUserControl uc2 = (WebUserControl)Master.FindControl("uc2");
TextBox tb = (TextBox)uc2.FindControl("TextBox1");
Label1.Text = tb.Text;
我写WebUserControl uc2 = (WebUserControl)Master.FindControl("Head.ascx"); 这样是错的。到底怎么写?
例如<%@ Register Src="WebUserControl.ascx" TagName="UC_TXT" TagPrefix="uc1" %>
那么我们在页面中使用时就和使用普通控件是一样的<uc1:UC_TXT ID="uc1" runat="server" />上面的UC1 就是该用户控件的ID了你在内用页面的时候根据这个ID就能够找到该用户控件
<%@ Register Src="WebUserControl.ascx" TagName="UC_TXT" TagPrefix="uc2" %><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
<uc2:UC_TXT ID="[color=#FF0000]UC2" runat="server" />[/color]
</div>
</form>
</body>
</html>
<%@ Register Src="WebUserControl.ascx" TagName="UC_TXT" TagPrefix="uc2" %><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
<uc2:UC_TXT ID="UC2" runat="server" />
</div>
</form>
</body>
</html>
红色的是关键部分
<head runat="server">
<title>无标题页</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
<uc1:Head ID="Head1" runat="server" />
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
然后是自定义用户控件:
[code]
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Head.ascx.cs" Inherits="Head" %>
<table width="950" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" bgcolor="#6699FF">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx">首页</asp:HyperLink>
<asp:LinkButton ID="lkadmin" runat="server" Visible="false">LinkButton</asp:LinkButton>
</td>
<td align="right" bgcolor="#6699FF">
<asp:ImageButton ID="imgbtnShopCart" runat="server"
ImageUrl="~/image/shopcart.jpg" onclick="imgbtnShopCart_Click"
Height="18px" />
<asp:LoginStatus ID="LoginStatus1" runat="server" />
<asp:LoginView ID="LoginView1" runat="server">
<RoleGroups>
<asp:RoleGroup Roles="admin">
<ContentTemplate>
嘿嘿,管理员,欢迎你
</ContentTemplate>
</asp:RoleGroup>
<asp:RoleGroup Roles="user">
<ContentTemplate>
你好,普通用户
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
<LoggedInTemplate>
欢迎你!
</LoggedInTemplate>
</asp:LoginView>
<asp:LoginName ID="LoginName1" runat="server" ForeColor="#3333CC" />
| <asp:HyperLink ID="hlHelp" runat="server" ForeColor="#3333FF">帮助</asp:HyperLink>
| <asp:TextBox ID="txtSearch" runat="server" Width="117px"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" BackColor="Aqua"
style="margin-left: 0px" Text="搜索" Width="65px" />
</td>
</tr>
</table>
[/code]最后这个是内容页:
[code]
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
WebControl uc = (WebControl)Master.FindControl("uc1");
LinkButton lk = (LinkButton)uc.FindControl("lkadmin");
}
}
[/code]
帮忙看看是那里问题。。
谁叫你在后台看的那个ID是在模板页的前台代码里面 就是那个aspx 文件里面 你的用户控件叫Head.ascx 那么你在母版页搜索下 就一定会找到 <%@ Register 之类的引用例如下面的
<%@ Register Src="WebUserControl.ascx" TagName="UC_TXT" TagPrefix="uc2" %>然后你查找 TagPrefix 里面的 uc2 具体查找按你页面的为准 如果还是找不到 你把模板页代码发上来
在内容页面 CS文件中 WebUserControl head = (WebUserControl)Master.FindControl( "Head1");
LinkButton lk = (LinkButton)head.FindControl( "lkadmin ");
不是 WebControl 而是 WebUserControl
UserControl uc = (WebControl)Master.FindControl("Head"); 我试换了"Head1"或者是"head"还是没找到