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>