0

RadComboBoxの使用中に問題が発生しました。Telerik Demoの例を使用して、RadComboBoxに新しい空のプロジェクトのデマントに関するデータを入力しました。また、コントロールがデータに対してWCFサービスを呼び出すと、RadComboBoxContextパラメーターは空になります。私が間違っていることを教えていただけますか?

ヘルプは非常にありがたいです!

これが私が使用したコードのサンプルです:ASPX:

    <telerik:RadComboBox runat="server" ID="RadComboBox1" Height="100px" 
        EnableLoadOnDemand="true" ShowMoreResultsBox="true" EnableVirtualScrolling="true"
        EmptyMessage="Type here ...">
        <WebServiceSettings Path="~/ComboBoxWcfService.svc" Method="LoadData" />
    </telerik:RadComboBox>
</div>

WCFサービス:

    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "ComboBoxWcfService" in code, svc and config file together.

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ComboBoxWcfService {
    public void DoWork()
    {
    }
    [OperationContract]
    public RadComboBoxData LoadData(RadComboBoxContext context)
    {
        //The RadComboBoxData object contains all required information for load on demand:
        // - the items 
        // - are there more items in case of paging
        // - status message to be displayed (which is optional)

        AdventureWorksDataContext northwind = new AdventureWorksDataContext();



        RadComboBoxData result = new RadComboBoxData();

        //Get all items from the Customers table. This query will not be executed untill the ToArray method is called.
        var allCustomers = from customer in northwind.Customers
                           orderby customer.ContactName
                           select new RadComboBoxItemData
                           {
                               Text = customer.ContactName
                           };


        //In case the user typed something - filter the result set
        string text = context.Text;
        if (!String.IsNullOrEmpty(text))
        {
            allCustomers = allCustomers.Where(item => item.Text.StartsWith(text));
        }
        //Perform the paging
        // - first skip the amount of items already populated
        // - take the next 10 items
        int numberOfItems = context.NumberOfItems;
        var customers = allCustomers.Skip(numberOfItems).Take(10);

        //This will execute the database query and return the data as an array of RadComboBoxItemData objects
        result.Items = customers.ToArray();


        int endOffset = numberOfItems + customers.Count();
        int totalCount = allCustomers.Count();

        //Check if all items are populated (this is the last page)
        if (endOffset == totalCount)
            result.EndOfItems = true;

        //Initialize the status message
        result.Message = String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>",
                                       endOffset, totalCount);

        return result;
    }
}

WebConfig:

      <service behaviorConfiguration="metadataAndDebug" name="WebApplication1.ComboBoxWcfService">
    <endpoint address="" behaviorConfiguration="WebBehavior" binding="webHttpBinding"
      contract="WebApplication1.ComboBoxWcfService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
4

1 に答える 1

0

トリックの場所を見つけました。Ajax 対応の WCF サービスを使用する必要がありました。したがって、WebBehavior の代わりに AjaxBehavior を使用する必要がありました。

    <behavior name="AjaxBehavior">
      <enableWebScript />
    </behavior>
    <behavior name="WebBehavior">
      <webHttp />
    </behavior>
于 2012-03-15T18:43:58.187 に答える