اياكس أدوات التحكم مخصص تبويب موسع لإغلاق علامات التبويب العميل

StackOverflow https://stackoverflow.com/questions/3292366

سؤال

أحاول كتابة موسع تحكم أجاكس يمكنه تعديل مجموعة أدوات تحكم أجاكس TabPanel حتى أن TabPanelيحتوي رأس الصورة على صورة بعد النص الذي ، عند النقر عليه ، يخفي رأس علامة التبويب باستخدام البرنامج النصي من جانب العميل (بدون إعادة النشر).وأود أيضا أن تكون قادرة على تحديد وظيفة أونكلينتكلوس التي تسمى أيضا عند إغلاق علامة تبويب.

أنا جديد على موسعات التحكم أسب ، وحتى الآن لقد اتبعت [البرنامج التعليمي](http://www.asp.net/ajax/tutorials/creating-a-custom-ajax-control-toolkit-control-extender-cs"إنشاء مخصص أجاكس التحكم أدوات التحكم موسع") على ASP.NET موقع لإنشاء موسع مخصص.لقد دعوت بلدي موسع ل ClosableTabPanelExtender, ، ويبني مشروع الموسع الخاص بي.أقوم بإعداد صفحة ويب اختبار مثل ذلك:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" />
<asp:TabContainer ID="TabContainer1" runat="server">
    <asp:TabPanel ID="TabPanel0" runat="server">
        <HeaderTemplate>Tab 0</HeaderTemplate>
        <ContentTemplate>Hello!</ContentTemplate>
    </asp:TabPanel>
    <asp:TabPanel ID="TabPanel1" runat="server">
        <HeaderTemplate>Tab 1</HeaderTemplate>
        <ContentTemplate>Goodbye!</ContentTemplate>
    </asp:TabPanel>
</asp:TabContainer>
<cc1:ClosableTabPanelExtender ID="ClosableTabPanelExtender1" runat="server" 
    TargetControlID="TabPanel1" />

حتى الآن ، أتلقى الخطأ التالي عند تشغيل موقع الويب:
The TargetControlID of 'ClosableTabPanelExtender1' is not valid. A control with ID 'TabPanel1' could not be found.
الخطأ يجعلني أعتقد أن TabPanel لا يمكن تمديدها ، لذلك أنا ذاهب لدينا لتمديد TabContainer في حين أن?

بصرف النظر عن الخطأ ، يمكنني استخدام بعض الاتجاه ، خاصة مع البرنامج النصي للسلوك.إنه الجزء الأكثر مراوغة بالنسبة لي ، على الرغم من أنني أعلم أنه من المحتمل أن يضم معظم الوظائف التي أحاول إضافتها.لست متأكدا أيضا من كيفية عمل الأجزاء الأخرى من الموسع معها.

لدي شفرة المصدر مجموعة أدوات أجاكس ، ونظرت من خلال المصدر لعناصر التحكم في علامة التبويب ، والتي أفهم جزئيا.لقد بحثت أيضا في العديد من الأمثلة على موسعات التحكم ، في المقام الأول موسعات مات بيرسيث وواحد من دان والين.

هل كانت مفيدة؟

المحلول

لقد اكتشفت أخيرا ما يجب أن أفعله.لأي شخص مهتم في الحل:

  • من أجل توسيع السيطرة تاببانيل ، واضطررت الى الالتفاف على الخطأ نشرت لي من قبل تجاوز OnResolveControlID الطريقة في رمز خادم الموسع الخاص بي (ClosableTabPanelExtender.cs).

    protected override void OnResolveControlID(ResolveControlEventArgs e)
    {
        // Get a reference to the outermost TabContainer that contains the TabPanel being extended.
        TabContainer tabContainer = (TabContainer)base.FindControl(OuterTabPanelID);
        if (tabContainer != null)
        {
            // Check to see if any of the tabs are the control we are looking form.
            foreach (TabPanel tab in tabContainer.Tabs)
            {
                if (tab.ID == e.ControlID)
                {
                    e.Control = tab;
                    return;
                }
            }
            // If none of the tabs are what we are looking for, search the contents of each tab.
            foreach (TabPanel tab in tabContainer.Tabs)
            {
                Control ctrl = tab.FindControl(e.ControlID);
                if (ctrl != null)
                    return;
            }
        }
    }
    
  • أما بالنسبة للبرنامج النصي للسلوك من جانب العميل للموسع (والتفاعل بين الخادم ورمز العميل ، فإن المقالات المدرجة في هذه الصفحة مسن مفيدة وسوف توفر لك الكثير من المتاعب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top