Пустой radcomboboxcontext.
-
12-12-2019 - |
Вопрос
Я сталкиваюсь с проблемой при использовании RadCombobox.Я использовал пример Demo Teleerik, чтобы заполнить 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>
. Решение
Я нашел, где был трюк.Мне нужно было использовать службу WCF с поддержкой AJAX.Поэтому я должен был использовать Ajaxbehavior вместо webbehavior:
<behavior name="AjaxBehavior">
<enableWebScript />
</behavior>
<behavior name="WebBehavior">
<webHttp />
</behavior>
. Не связан с StackOverflow