سؤال

لدي مكرر يحتوي على telerik radcombobox:

<asp:Repeater ID="rpt" runat="server">
    <ItemTemplate>
        <telerik:RadComboBox ID="rcb" runat="server" EnableLoadOnDemand="true"  
             AllowCustomText="true" ItemRequestTimeout="1000"
             NumberOfItems="10" MarkFirstMatch="false">
        </telerik:RadComboBox>
    </ItemTemplate>
</asp:Repeater>

في حدث ItemDATABOund للمكرر، أنا أسلاك الحدث indurequested مثل هذا:

private void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e) {
    RadComboBox rcb = (RadComboBox)e.Item.FindControl("rcb");
    rcb.ItemsRequested += rcb_ItemsRequested;
}
private void rcb_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e) {
    // Database call to load items occurs here.
    // As configured, this method is never called.
}

حاليا، لا يتم استدعاء الأسلوب RCB_ITEMSReStrequestrequested. أظن أن الأسلاك الحدث ResultReated في ItemDatabound هو مشكلة، ولكن المشكلة قد تكمن في مكان آخر.

أي أفكار حول كيفية استخدام Telerik Radcombobox داخل مكرر بشكل صحيح؟

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

المحلول

هل حاولت وضع أسلاك معالج الأحداث في العلامات بدلا من إضافة ذلك ديناميكيا؟

أيضا - ربما تكون على دراية، ولكن فقط في حالة - ItemsRequested هي حدث ينطلق فقط في ظل ظروف معينة. إلى اقتباس المستندات:

The ItemsRequested event occurs when the EnabledLoadOnDemand property is True and the user types text into the input field or clicks on the drop-down toggle image when the list is empty. - مرجع

هل يطابق السيناريو الخاص بك أعلاه؟

تعديل:

لقد اختبرت بعض الكود. يعمل Works التالية (حرائق الأحداث "induresRequested" لجميع comboboxes وتضيف عناصر الاختبار الثلاثة إلى القائمة المنسدلة على الطيران ..)

وضع علامة على:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />

    <asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_ItemDataBound">
        <ItemTemplate>
            <br />
            <telerik:RadComboBox ID="rcb" runat="server" EnableLoadOnDemand="true" AllowCustomText="true"
            ItemRequestTimeout="1000" NumberOfItems="10" MarkFirstMatch="false" />
        </ItemTemplate>
    </asp:Repeater>
</form>

رمز وراء:

protected void Page_Load(object sender, EventArgs e)
{
    List<string> data = new List<string>();
    data.Add("Item 1");
    data.Add("Item 2");

    //add some items to the repeater to force it to bind and repeat..
    rpt.DataSource = data;
    rpt.DataBind();
}

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    //wire the event
    RadComboBox rcb = (RadComboBox)e.Item.FindControl("rcb");
    rcb.ItemsRequested += rcb_ItemsRequested;
}

protected void rcb_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
{
    //add the items when requested.
    (sender as RadComboBox).Items.Add(new RadComboBoxItem("Item1", "1"));
    (sender as RadComboBox).Items.Add(new RadComboBoxItem("Item2", "2"));
    (sender as RadComboBox).Items.Add(new RadComboBoxItem("Item3", "3"));
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top