Asp.net Web用户控件通过XML填充项

Asp.net Web用户控件通过XML填充项,asp.net,web-user-controls,Asp.net,Web User Controls,我有一个web用户控件名作为图表控件,在图表控件中有一个下拉列表 我想像这样填充图表控件的下拉列表: <UC:ChartControl ID="abc" runat="server"> <ChartDropDownItems> <asp:ListItem Text="Graph_Amount_Items_Sold" Value="0"></asp:ListItem> <asp:L

我有一个web用户控件名作为图表控件,在图表控件中有一个下拉列表 我想像这样填充图表控件的下拉列表:

<UC:ChartControl ID="abc" runat="server">
        <ChartDropDownItems>
            <asp:ListItem Text="Graph_Amount_Items_Sold" Value="0"></asp:ListItem>
            <asp:ListItem Text="Graph_Ranking" Value="1"></asp:ListItem>
            <asp:ListItem Text="Graph_Share_Amount_Items_Sold" Value="2"></asp:ListItem>
            <asp:ListItem Text="Graph_Share_Unit_items_Sold" Value="3" Selected="True"></asp:ListItem>
            <asp:ListItem Text="Graph_Unit_items_Sold" Value="4"></asp:ListItem>
        </ChartDropDownItems>
    </UC:ChartControl>
我想在设计阶段就开始工作。 有人能据此建议我吗?
谢谢。

确保您的类名为
ChartControl
,并且其派生自
UserControl
而非
Control
,这可能是导致此错误的原因,希望这能有所帮助。

好的,经过数小时的google fu之后,我得出结论,要么在设计器中无法看到内部子标记,或者,没有人费心给出一个好的答案来说明如何做到这一点

根据这篇文章的引用:

注意:Visual Studio designer不支持模板化ASP.NET用户控件。但是,您可以在Visual Studio中编译并运行此示例。为此,当您创建ASP.NET页面来测试此代码时,请使用示例清单中的代码和标记替换页面中设计器生成的所有代码

但是,正如您所知,这是一个模板通知,但是在我用许多其他数据类型(列表、集合、ArrayList)尝试过之后,它似乎是相同的

可能有一个属性我们都缺少,以使其在设计器中可见,但它似乎是相当隐藏的(请,任何人,请随时证明我错了)

我只是觉得代码编译并运行起来很奇怪,但是你不能让designer对丢失的属性闭嘴

我使用的链接:


也许这些会有帮助,也许不会。很抱歉告诉您这个坏消息,但这是我能找到的最好的。

我向您保证它是从UserControl派生的。但在asp.net网页设计时不起作用。很奇怪,您收到的错误消息是指web.UI.Control而不是键入web.UI.UserControl,不知何故您缺少对UserControl的强制转换,这使它在web.UI.Control中搜索公共属性。我添加了该类的正确声明。您可以查看更新的版本。是否可以发布
ChartControl
的标记?
 [DefaultProperty("ChartDropDownItems"),
    ParseChildren(true, "ChartDropDownItems"), PersistChildren(false),
    ToolboxData("<{0}:ChartControl runat=\"server\"> </{0}:ChartControl>")]

    public partial class ChartControl : System.Web.UI.UserControl
    {
     private List<ListItem> lst;
            [Browsable(true)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
            [PersistenceMode(PersistenceMode.InnerProperty)]

            public List<ListItem> ChartDropDownItems
            {
                set
                {
                    lst = value;
                    Bind_ddChartChange();
                }
            }
     private void Bind_ddChartChange()
            {

                if (lst != null)
                {
                    ddChartChange.DataSource = lst;
                    ddChartChange.DataTextField = "Text";
                    ddChartChange.DataValueField = "Value";
                    ddChartChange.DataBind();
                    ListItem li = lst.Find(x => x.Selected == true);
                    ddChartChange.SelectedValue = li.Value;

                }
            }
}
"Error Creating Control"
"Type'System.Web.UI.Control' does not have a public property named 'ChartDropDownItems'"