Getting items via webservice clears what was typed in.

1 posts, 0 answers
  1. Edward
    Edward avatar
    3 posts
    Member since:
    Sep 2012

    Posted 07 Dec 2012 Link to this post

    Hello,
    I have a Usercontrol with a RadComboBox that gets items via a webservice.
    Everything is working correctly, however when I type, the search text disappears.
    I had the same exact behavior with postbacks, but now its not posting back, and it is still doing the same thing.

    Please take a look at the code below.
    Here is the code for the RadComboBox:
    <telerik:RadComboBox
        ID="cboContentProvider"
        runat="server"
        Width="225px"
        CheckBoxes="true"
        EmptyMessage="-- Select --"
        EnableLoadOnDemand="True"
        ShowMoreResultsBox="True"
        OnClientItemChecked="ItemChecked"
        EnableVirtualScrolling="True">
        <WebServiceSettings Method="GetContentProviderData" Path="../../WebService/BoomboxWs.asmx" />
        <ExpandAnimation Type="InOutElastic" />
    </telerik:RadComboBox>

    Here is the code for CP_ItemChecked:
    function CP_ItemChecked(sender, eventArgs) {
        var data = '{ "type": "' + sender.get_id() + '", "id": "' + eventArgs.get_item().get_value() + '" }';
        $.ajax({
            type: "POST",
            url: "../../WebService/BoomboxWs.asmx/MarkSelectedItem",
            data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
            }
        });
    }

    Here is the WebMethod:
    [WebMethod(EnableSession = true)]
    public RadComboBoxData GetContentProviderData(RadComboBoxContext context)
    {
        return GetRadComboBoxData(context, DtCp, DtCp.Count());
    }
     
    public RadComboBoxData GetRadComboBoxData(RadComboBoxContext context, List<GenericDataList> data, int itemsPerRequest = 20)
    {
        var comboData = new RadComboBoxData();
     
        var itemOffset = context.NumberOfItems;
        var endOffset = itemOffset + itemsPerRequest;
     
        if (endOffset > data.Count())
        {
            endOffset = data.Count();
        }
     
        if (!string.IsNullOrEmpty(context.Text))
        {
            data = data.Where(q => q.Name.ToUpper().Contains(context.Text.ToUpper())).ToList();
        }
     
        comboData.EndOfItems = endOffset == data.Count();
     
        var result = new List<RadComboBoxItemData>(endOffset - itemOffset);
     
        result.AddRange(data.Take(endOffset).Skip(itemOffset)
            .Select(radItem => new RadComboBoxItemData {Text = radItem.Name, Value = radItem.Id.ToString(CultureInfo.InvariantCulture)}));
     
        comboData.Message = data.Any() ? String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>", endOffset, data.Count()) : "No matches";
        comboData.Items = result.ToArray();
     
        return comboData;
    }
Back to Top