سؤال

أنا إنشاء مخصص القائمة المنسدلة مع اياكس dropdownextender.داخل لوحة قطرة لدي linkbuttons عن خياراتي.

<asp:Label ID="ddl_Remit" runat="server" Text="Select remit address."
    Style="display: block; width: 300px; padding:2px; padding-right: 50px; font-family: Tahoma; font-size: 11px;" />
<asp:Panel ID="DropPanel" runat="server" CssClass="ContextMenuPanel" Style="display :none; visibility: hidden;">
    <asp:LinkButton runat="server" ID="Option1z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />
    <asp:LinkButton runat="server" ID="Option2z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />
    <asp:LinkButton runat="server" ID="Option3z" Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem" />-->
</asp:Panel>
<ajaxToolkit:DropDownExtender runat="server" ID="DDE"
    TargetControlID="ddl_Remit"
    DropDownControlID="DropPanel" />

و هذا يعمل بشكل جيد.الآن ما يجب القيام به هو حيوي ملء هذا dropdownlist.هنا هو بلدي أفضل محاولة:

private void fillRemitDDL()
{
    //LinkButton Text="451 Stinky Place Drive <br/>North Nowhere, Nebraska 20503-2343 " OnClick="OnSelect" CssClass="ContextMenuItem"

    DAL_ScanlineTableAdapters.SL_GetRemitByScanlineIDTableAdapter ta = new DAL_ScanlineTableAdapters.SL_GetRemitByScanlineIDTableAdapter();
    DataTable dt = (DataTable)ta.GetData(int.Parse(this.SLID));
    if (dt.Rows.Count > 0)
    {
        Panel ddl = this.FindControl("DropPanel") as Panel;
        ddl.Controls.Clear();
        for (int x = 0; x < dt.Rows.Count; x++)
        {
            LinkButton lb = new LinkButton();
            lb.Text = dt.Rows[x]["Remit3"].ToString().Trim() + "<br />" + dt.Rows[x]["Remit4"].ToString().Trim() + "<br />" + dt.Rows[x]["RemitZip"].ToString().Trim();
            lb.CssClass = "ContextMenuItem";
            lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")");
            ddl.Controls.Add(lb);
        }
    }
}

مشكلتي هي أنني لا أستطيع الحصول على هذا الحدث لتشغيل البرنامج النصي!لقد حاولت رمز أعلاه وكذلك استبدال

lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")");  

مع

lb.Click += new EventHandler(OnSelect);  

و أيضا

lb.OnClientClick = "setDDL(" + lb.Text + ")");

أنا اختبار الفروع مع التنبيهات على جانب العميل و الحصول على أي شيء.

تحرير:وأود أن محاولة إضافة العامة مرساة ولكن أعتقد أنني يمكن إضافة عنصر إلى asp.net التحكم.ولا يمكنني الوصول إلى العميل شعبة من رمز الملقم لإضافة الأمر على هذا النحو.أنا ذاهب إلى استخدام نوع من التحكم مع الحدث.بلدي setDLL وظيفة يذهب على النحو التالي:

function setDDL(var)
{
    alert(var);
    document.getElementById('ctl00_ContentPlaceHolder1_Scanline1_ddl_Remit').innerText = var;
}

أيضا أنا فقط أخذت من سلسلة متغير في استدعاء دالة (أيمن

lb.Attributes.Add("onclick", "setDDL(" + lb.Text + ")");   

إلى

lb.Attributes.Add("onclick", "setDDL()");
هل كانت مفيدة؟

المحلول

لست متأكدا ما setDDL الأسلوب في البرنامج النصي الخاص بك ولكن يجب أن النار إذا كان أحد أزرار الارتباط النقر.أعتقد أنك يمكن أن يكون أفضل حالا مجرد فقرة عامة html مرساة على الرغم بدلا من .صافي linkbutton كما سيكون لديك أي إشارة إلى السيطرة على جانب الملقم.ثم يمكنك التعامل مع البيانات excahnge مع setDDL الأسلوب.وعلاوة على ذلك قد ترغب في الاقتباس السلسلة الذي يتم وضع داخل الدعوة إلى setDDL لأنه سوف يسبب مشاكل في النص (مثل عدم استدعاء الأسلوب + صفحة أخطاء) نظرا تقوم بوضع سلسلة حرفية البيانات بدون علامات الاقتباس.

نصائح أخرى

حسنا ، كنت حرفية لخلق مرساة الكلمات الدليلية مع onclicks عليها و يبدو أن هذا عمل عظيم.شكرا جزيلا.

إضافة ربما ينبغي أن ننظر مثل هذا (إضافة " حول السلسلة ، إضافة ؛ إلى نهاية جافا سكريبت البيان).

lb.Attributes.Add("onclick", "setDDL('" + lb.Text + "');");

أو!

تعيين OnClientClick الملكية على linkbutton.

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