不可以,不过你可以根据用户选择的枚举类型,来生在对应的webControl

解决方案 »

  1.   

    用FontControl方法,不过它只能找到本容器中的控件,你写一个递归函数就ok了
      

  2.   

    回复人: flygoldfish(flygoldfish) ( ) 信誉:98  2004-01-07 14:41:00  得分:0 递归出来后怎样把它们做成枚举类型让用户选择呢?
      

  3.   

    就像微软的DataGrid里的DataSource属性一样,自动从DataSet里取出DataTable的列表让用户选择,怎么实现呢?帮帮忙啊
      

  4.   

    flygoldfish(flygoldfish) 开玩笑呢吧,陆军 你提的问题,我认为比较难,在这个坛子里我想很难找到人解答 ,我认为只有找到设计文件的文本缓冲区,你才能找到答案
      

  5.   

    自定义控件添加INamingContainer 接口后
    我把字段类型写成System.Web.UI.Controlpublic class WebataBind :System.Web.UI.Control,IPostBackEventHandler,INamingContainer
    {
    ......./// <summary>
    /// 
    /// </summary>
    [Category("MyProperty"), Description("字段影射的控件")]
    public System.Web.UI.Control Ctrl
    {
    get
    {
    return (System.Web.UI.Control)ViewState["Ctrl"];
    }
    set
    {
    ViewState["Ctrl"] = value;
    }
    }
    }这样就能实现
    不过输出有错误啊
    无法为“System.Web.UI.Control”类型的值生成代码。试图为 Ctrl 生成属性值时出现此错误。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 无法为“System.Web.UI.Control”类型的值生成代码。试图为 Ctrl 生成属性值时出现此错误。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [HttpException (0x80004005): 无法为“System.Web.UI.Control”类型的值生成代码。试图为 Ctrl 生成属性值时出现此错误。]
       System.Web.Compilation.CodeDomUtility.GenerateExpressionForValue(PropertyInfo propertyInfo, Object value, Type valueType) +2252
       System.Web.Compilation.TemplateControlCompiler.BuildBuildMethod(ControlBuilder builder, Boolean fTemplate, PropertySetterEntry pse) +2550
       System.Web.Compilation.TemplateControlCompiler.BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, PropertySetterEntry pse) +794
       System.Web.Compilation.TemplateControlCompiler.BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, PropertySetterEntry pse) +675
       System.Web.Compilation.TemplateControlCompiler.BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, PropertySetterEntry pse) +675
       System.Web.Compilation.TemplateControlCompiler.BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, PropertySetterEntry pse) +352
       System.Web.Compilation.TemplateControlCompiler.BuildSourceDataTreeFromBuilder(ControlBuilder builder, Boolean fInTemplate, PropertySetterEntry pse) +352
       System.Web.Compilation.TemplateControlCompiler.BuildMiscClassMembers() +52
       System.Web.Compilation.PageCompiler.BuildMiscClassMembers() +10
       System.Web.Compilation.BaseCompiler.BuildSourceDataTree() +1275
       System.Web.Compilation.BaseCompiler.GetCompiledType() +129
       System.Web.UI.PageParser.CompileIntoType() +60
       System.Web.UI.TemplateParser.GetParserCacheItemThroughCompilation() +124[HttpException (0x80004005): 无法为“System.Web.UI.Control”类型的值生成代码。试图为 Ctrl 生成属性值时出现此错误。]
       System.Web.UI.TemplateParser.GetParserCacheItemInternal(Boolean fCreateIfNotFound) +692
       System.Web.UI.TemplateParser.GetParserCacheItem() +32
       System.Web.UI.TemplateControlParser.CompileAndGetParserCacheItem(String virtualPath, String inputFile, HttpContext context) +116
       System.Web.UI.TemplateControlParser.GetCompiledInstance(String virtualPath, String inputFile, HttpContext context) +36
       System.Web.UI.PageParser.GetCompiledPageInstanceInternal(String virtualPath, String inputFile, HttpContext context) +43
       System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String path) +44
       System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, String path, String pathTranslated, Boolean useAppConfig) +699
       System.Web.MapHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute() +95
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +173 怎么回事????????????????????????
      

  6.   

    Category("MyProperty")
    应该是这个属性标记有问题
    MyProperty这个类型从那来的?
      

  7.   

    可以参考QuickStart中的portal例子,跟楼主需求相近!
      

  8.   

    回复人: heatwin() ( ) 信誉:100  2004-01-07 17:29:00  得分:0 QuickStart中的portal例子在哪下啊?
      

  9.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c81c.asp#q714q
      

  10.   

    回复人: webdiyer(陕北吴旗娃) ( ) 信誉:98  2004-01-07 21:03:00  得分:0 能具体点吗?在那里我还是找不到答案。
      

  11.   

    Sorry!!!看来我提的问题太难了
      

  12.   

    你装了Framework sdk后在示例与快速入门教程中的实例应用程序的个性化门户既是。
    他是做好了一些用户控件,通过用户的选择,动态装载这些控件以达到那种效果
      

  13.   

    你需要为你的这个属性写一个TypeConverter(类型转换器),我上面提供的链接文章说的就是这个问题:How can I supply a list of values to be chosen from a dropdown list at runtime for a specific type similar to enums?
    如果看不懂,再看看这个:
    http://morganskinner.dnsalias.net/Articles/AStructTypeConverter/
    这篇文章中没有重写GetStandardValuesSupported和GetStandardValuesExclusive这两个属性,这是实现你的要求的必要条件,如果你还看不懂,我只好找时间给你写一个了!:)
      

  14.   

    回复人: webdiyer(陕北吴旗娃) ( ) 信誉:98  2004-01-08 20:26:00  得分:0 我看过给出的例子,可是我理解不了,我怎么应用自己写的TypeConverter呢?我要把页面上的WebControlCollection转成string类型作为Enum让用户选择
    麻烦了
      

  15.   

    关于枚举的应用:http://www.codeproject.com/aspnet/webcontrolsdatabinding.asp?target=IEnumerable
      

  16.   

    我知道怎么写TypeConverter了,现在的关键就是怎么把页面上的WebControls集合跟我的TypeConverter结合起来,
    就是把WebControlCollection当作我的TypeConverter里的Values返回各位大哥大姐帮忙看一下阿谢谢了
      

  17.   

    假如你要获取当前页面上所有的TextBox,可以这样重写GetStandardValues方法:public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
    ArrayList ctrls=new ArrayList();
    ctrls.Add("None");
    IDesignerHost host=(IDesignerHost)context.GetService(typeof(System.ComponentModel.Design.IDesignerHost));
    IContainer container=host.Container;
    if(container!=null)
    {
    for(int i=0;i<container.Components.Count;i++)
    {
    IComponent compt=container.Components[i];
    if(compt is TextBox)
    {
    ctrls.Add(((TextBox)compt).ID);
    }
    }
    }
    return new StandardValuesCollection(ctrls);
    }
      

  18.   

    上次waki也问过同样的问题。
    你可以参考:
    http://expert.csdn.net/Expert/TopicView1.asp?id=2620821
      

  19.   

    特别鸣谢
    webdiyer(陕北吴旗娃)
    anbeel(Coding人生) 借此机会给大家拜个早年,祝生意兴隆