当前位置:编程学习 > C#/ASP.NET >>

如何获取命名空间中的控件id(gridview,label等)

本想偷懒,使用了Article的模版建立.net网站,结构发现了2个头疼的命名空间。在default页面没法调用gridview等控件的id。求高手指点。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.Design;
using System.ComponentModel;

namespace Artisteer
{
    [ParseChildren(true)]
    [Designer(typeof(BlockDesigner))]
    public class Block : WebControl
    {
        public ITemplate _contentTemplate = null;

        private PlaceHolder _headerPlaceholder = null;
        private PlaceHolder _contentPlaceholder = null;

        private string _caption;

        public string Caption
        {
            get { return _caption; }

            set { _caption = value; }
        }

        [Browsable(false)]
        [TemplateContainer(typeof(TemplateContainer))]
        [PersistenceMode(PersistenceMode.InnerProperty)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public ITemplate ContentTemplate
        {
            get { return _contentTemplate; }
            set { _contentTemplate = value; }
        }

        public PlaceHolder HeaderPlaceholder
        {
            get { return _headerPlaceholder; }
            set { _headerPlaceholder = value; }
        }

        public PlaceHolder ContentPlaceholder
        {
            get { return _contentPlaceholder; }
            set { _contentPlaceholder = value; }
        }

        protected override void CreateChildControls()
        {
            Controls.Clear();

            Control blockMarkup = Page.LoadControl("~/Design/Block.ascx");

            _headerPlaceholder = blockMarkup.FindControl("HeaderPlaceholder") as PlaceHolder;
            _contentPlaceholder = blockMarkup.FindControl("ContentPlaceholder") as PlaceHolder;

            _headerPlaceholder.Visible = ! String.IsNullOrEmpty(_caption);

            if (_headerPlaceholder.Visible)
            {
                Literal caption = new Literal();
                caption.Text = _caption;
                _headerPlaceholder.Controls.Add(caption);
            }

            if (_contentTemplate != null)
            {
                TemplateContainer container = new TemplateContainer();
                _contentTemplate.InstantiateIn(container);
                _contentPlaceholder.Controls.Add(container);
            }

            Controls.Add(blockMarkup);
        }

        public override void DataBind()
        {
            EnsureChildControls();
            base.DataBind();
        }

        protected override HtmlTextWriterTag TagKey
        {
            get { return HtmlTextWriterTag.Div; }
        }

        public class TemplateContainer : Control, INamingContainer
        {
        }
    }

    public class BlockDesigner : ContainerControlDesigner
    {
        public override string FrameCaption
        {
            get
            {
                Block ctl = this.Component as Block;
                return ctl.Caption;
            }
        }
    }
}


default.aspx中

<%@ Page Language="C#" MasterPageFile="~/design/MasterPage.master" ValidateRequest="false" AutoEventWireup="true" CodeFile="details.aspx.cs" Inherits="details" Title="Untitled Page" %>
<%@ Import Namespace="Artisteer" %>
<%@ Register TagPrefix="artisteer" Namespace="Artisteer" %>
<%@ Register TagPrefix="art" TagName="DefaultMenu" Src="DefaultMenu.ascx" %> 
<%@ Register TagPrefix="art" TagName="DefaultHeader" Src="DefaultHeader.ascx" %> 
<%@ Register TagPrefix="art" TagName="DefaultSidebar1" Src="DefaultSidebar1.ascx" %>
<%@ MasterType VirtualPath="~/design/MasterPage.Master" %>

<asp:Content ID="PageTitle" ContentPlaceHolderID="TitleContentPlaceHolder" Runat="Server">
 </asp:Content>

<asp:Content ID="MenuContent" ContentPlaceHolderID="MenuContentPlaceHolder" Runat="Server">
    <art:DefaultMenu ID="DefaultMenuContent" runat="server" />
</asp:Content>
<asp:Content ID="HeaderContent" ContentPlaceHolderID="HeaderContentPlaceHolder" Runat="Server">
    <art:DefaultHeader ID="DefaultHeader" runat="server" />
</asp:Content>
<asp:Content ID="SideBar1" ContentPlaceHolderID="Sidebar1ContentPlaceHolder" Runat="Server">
    <art:DefaultSidebar1 ID="DefaultSidebar1Content" runat="server" />
</asp:Content>
<asp:Content id="SheetContent" ContentPlaceHolderID="SheetContentPlaceHolder" Runat="Server">
    
<artisteer:Block ID="NewsletterBlock" Caption="" runat="server">
<ContentTemplate><div>
    <input type="text" value="" name="email" id="search_text" style=" font-size:14px; color:#999;width: 95%; height:20px;" />
    <span class="art-button-wrapper">
     <span class="l"> </span>
     <span class="r"> </span>
        <asp:Button class="art-button" ID="Button1" runat="server" OnClick="Button1_Click" Text="查询" /></span></div>
      
       </ContentTemplate> 
       </artisteer:Block>
       
       <artisteer:Article ID="Article1" Caption="" runat="server" />
     
<artisteer:Block id="HighlightsBlock2" Caption="" runat="server" >
        
<ContentTemplate>
 <div style="width:50%; float:left;" id="hhs" runat="server">
        <asp:GridView ID="GridView1" runat="server">
         </asp:GridView>    </div>
        <div style="width:50%; float:left;" id="hh" runat="server">
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
       
    </div>
    <div id="dd" style="width:50%; float:left;" runat="server">
        
    </div></ContentTemplate>
    </artisteer:Block>
       
</asp:Content>
   
gridview1 和 label1 都没法在 default.aspx.cs中自动显示出来。控件实在找不到。求高手指点。 --------------------编程问答-------------------- CodeFile="details.aspx.cs" Inherits="details" 是否正确 --------------------编程问答-------------------- 那个我知道,文件名不重要。
--------------------编程问答-------------------- 通过Content 的ID的FindControl去找 --------------------编程问答--------------------
引用 3 楼  的回复:
通过Content 的ID的FindControl去找

高手,代码咋弄啊,asp.net不太熟。命名空间弄得乱。请赐教啊。 --------------------编程问答-------------------- 还有,只能找到<artisteer:Block id="HighlightsBlock2" Caption="" runat="server" >
的id,但是findcontrol不到label --------------------编程问答-------------------- 求高手啊
--------------------编程问答-------------------- 你可以采用递归找到任何控件。

没有你的全部代码,没法给写成具体的代码的。
自己要学会调试。
你可以启用Trace功能,查看控件树
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,