簡體   English   中英

CompositeControl內部的數據綁定控件

[英]Databinding controls inside CompositeControl

我創建了一個CompositeControl,它實際上是MultiView的包裝器,但是如果我嘗試在View中使用任何數據綁定控件(例如GridView或FormView),則會收到錯誤消息:

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

我已將課程減少到最低限度,但仍然出現錯誤。 該類如下所示:

[DefaultProperty("Pages"), ParseChildren(true, "Pages"), ToolboxData("<{0}:TestTabs runat=\"server\"></{0}:TestTabs>")]
public class TestTabs : CompositeControl {

    private MultiView _multiViewControl;

    private Collection<View> _pages;
    public Collection<View> Pages {
        get {
            if (_pages == null) _pages = new Collection<View>();
            return _pages;
        }
    }

    protected override void CreateChildControls() {
        _multiViewControl = new MultiView();
        foreach (View page in Pages) { _multiViewControl.Views.Add(page); }
        if (_multiViewControl.Views.Count > 0) _multiViewControl.ActiveViewIndex = 0;

        this.Controls.Add(_multiViewControl);

        base.CreateChildControls();
    }
}

標記如下:

<cc:TestTabs ID="testTabs" runat="server">
    <asp:View runat="server">
        <asp:FormView ID="fvTest" runat="server">
            <ItemTemplate>
                <asp:Label ID="lblTest" runat="server" Text='<%#Eval("TestField")%>' />
            </ItemTemplate>
        </asp:FormView>
    </asp:View>
</cc:TestTabs>

如果將FormView移到CompositeControl之外,則可以毫無問題地進行數據綁定。 另外,如果我使用標准的MultiView,則效果很好。

有任何想法嗎? 在此先感謝您(第一篇文章,如果我錯過任何信息,深表歉意)

編輯:讓事情變得更加奇怪,如果我將FormView提取到一個單獨的ascx UserControl中並將其放入View中,它將起作用!

您可以繼承CompositeDataBoundControl插入的CompositeControl

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM