Telerik Rad Combo使用Web服务创建问题填写 [英] Telerik Rad Combo fill by using web service creating problem
问题描述
private const int ItemsPerRequest = 10;
[WebMethod]
public RadComboBoxItemData [] GetAccount(object context)
{
RadComboBoxContext obj =(RadComboBoxContext)context;
DataTable data = GetDataAccount(obj.Text);
RadComboBoxData comboData = new RadComboBoxData();
int itemOffset = obj.NumberOfItems;
int endOffset = Math.Min(itemOffset + ItemsPerRequest,data.Rows .Count);
comboData.EndOfItems = endOffset == data.Rows.Count;
List< radcomboboxitemdata> result = new List< radcomboboxitemdata>(endOffset - itemOffset);
for(int i = itemOffset; i< endOffset; i ++)
{
RadComboBoxItemData itemData = new RadComboBoxItemData();
itemData.Value = data.Rows [i] [AccountLevelNo]。ToString();
itemData.Text = data.Rows [i] [AccountDesc3]。ToString();
itemData.Attributes.Add(Level6,data.Rows [i] [ AccountDesc2]。ToString());
itemData.Attributes.Add(Level1,data.Rows [i] [AccountDesc1]。ToString());
result.Add(itemData);
}
comboData.Items = result.ToArray();
// comboData.Message = GetStatusMessage(endOffset,data.Rows.Count);
return comboData.Items.ToArray();
}
private static DataTable GetDataAccount(stri ng text)
{
int accCode = 0;
string query =选择COA.LevelAccountNo,COA.AccountDesc为AccountDesc3,Level1。 AccountDesc为AccountDesc1,Level2.AccountDesc为来自COA COA的AccountDesc2,(从COA选择LevelAccountNo,AccountDesc+
,其中len(LevelAccountNo)= 2)为Level1,(选择LevelAccountNo,来自COA的AccountDesc) len(LevelAccountNo)= 5)作为Level2+
,其中Level1.LevelAccountNo = left(COA.LevelAccountNo,2)和Level2.LevelAccountNo = left(COA.LevelAccountNo,5)和len(COA .LevelAccountNo)> 6;
试试
{
accCode = Convert.ToInt32(text);
query = query +COA.LevelAccountNo like'+ text +%';
}
catch(例外情况)
{
查询= query +COA.AccountDesc3 like'%+ text +%'; < br $>
}
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings [ConnectionString]。ToString());
// string constr = ConfigurationManager.ConnectionStrings [ConnectionString]。ConnectionString;
SqlDataAdapter adapter = new SqlDataAdapter(query,con);
// adapter.SelectCommand.Parameters.AddWithValue(@ text,text);
DataTable data = new DataTable();
adapter.Fill(data);
con.Close();
返回数据;
}
这是我的网络服务代码
< telerik:RadComboBox ID = cboAccount runat = server 高度 = 200 宽度 = 200 EmptyMessage = 选择一个帐户
< span class =code-attribute> < span class =code-attribute> < span class =code-attribute> EnableLoadOnDemand = true ShowMoreResultsBox = true EnableVirtualScrolling = true >
< HeaderTemplate & gt;
< h3 > 帐户< / h3 >
< / HeaderTemplate >
< ClientItemTemplate >
< div >
< ul >
< li > < span > < b > 名称:#=文字#< / b > < / span > < / li >
< li > < span > Level6#= Attributes.Level6#< / span > < / li >
< li > < span > Level1:#= Attributes.Level4#< < span class =code-leadattribute> / span > < / li >
< < span class =code-leadattribut e> li > < span > Level4#= Attributes.Level1#< / span > < / li >
< / ul >
< / div >
< br > < / br >
< / ClientItemTemplate >
< WebServiceSettings 方法 = GetAccount 路径 = InvestmentDropDownWebService.asmx / >
< / telerik:RadComboBox &g t;
这是Rad组合框html代码和调用web服务
运行后该项目我将收到此错误请帮助我
类型Telerik.Web.UI.RadComboBoxContext不受支持,因为它实现了IDictionary。
< blockquote>我遇到了同样的问题。我如下处理这个问题。更改你的行
[WebMethod]
到
[WebMethod(EnableSession = true )]
[ScriptMethod( UseHttpGet = true ,ResponseFormat = ResponseFormat.Json)]
此外,添加
WebServiceSettings-UseHttpGet = 在RadCombo Box的ASPX代码中确实是
。做完这一切之后我的问题就解决了。希望它也适合你! :)
private const int ItemsPerRequest = 10;
[WebMethod]
public RadComboBoxItemData[] GetAccount(object context)
{
RadComboBoxContext obj = (RadComboBoxContext)context;
DataTable data = GetDataAccount(obj.Text);
RadComboBoxData comboData = new RadComboBoxData();
int itemOffset = obj.NumberOfItems;
int endOffset = Math.Min(itemOffset + ItemsPerRequest, data.Rows.Count);
comboData.EndOfItems = endOffset == data.Rows.Count;
List<radcomboboxitemdata> result = new List<radcomboboxitemdata>(endOffset - itemOffset);
for (int i = itemOffset; i < endOffset; i++)
{
RadComboBoxItemData itemData = new RadComboBoxItemData();
itemData.Value = data.Rows[i]["AccountLevelNo"].ToString();
itemData.Text = data.Rows[i]["AccountDesc3"].ToString();
itemData.Attributes.Add("Level6", data.Rows[i]["AccountDesc2"].ToString());
itemData.Attributes.Add("Level1", data.Rows[i]["AccountDesc1"].ToString());
result.Add(itemData);
}
comboData.Items = result.ToArray();
// comboData.Message = GetStatusMessage(endOffset, data.Rows.Count);
return comboData.Items.ToArray();
}
private static DataTable GetDataAccount(string text)
{
int accCode = 0;
string query = "select COA.LevelAccountNo,COA.AccountDesc as AccountDesc3,Level1.AccountDesc as AccountDesc1, Level2.AccountDesc as AccountDesc2 from COA COA,(select LevelAccountNo,AccountDesc " +
"from COA where len(LevelAccountNo)=2)as Level1,(select LevelAccountNo,AccountDesc from COA where len(LevelAccountNo)=5)as Level2 " +
"where Level1.LevelAccountNo=left(COA.LevelAccountNo,2)and Level2.LevelAccountNo=left(COA.LevelAccountNo,5) and len(COA.LevelAccountNo)>6";
try
{
accCode = Convert.ToInt32(text);
query = query + " COA.LevelAccountNo like '" + text + "%'";
}
catch (Exception ex)
{
query = query + " COA.AccountDesc3 like '%" + text + "%'";
}
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"].ToString());
// string constr=ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlDataAdapter adapter = new SqlDataAdapter(query, con);
// adapter.SelectCommand.Parameters.AddWithValue("@text", text);
DataTable data = new DataTable();
adapter.Fill(data);
con.Close();
return data;
}
this is my web service code
<telerik:RadComboBox ID="cboAccount" runat="server" Height="200" Width="200" EmptyMessage="Select an Account"
EnableLoadOnDemand="true" ShowMoreResultsBox="true" EnableVirtualScrolling="true">
<HeaderTemplate>
<h3>Accounts</h3>
</HeaderTemplate>
<ClientItemTemplate>
<div>
<ul>
<li><span><b>Name:#= Text # </b></span></li>
<li><span>Level6 #= Attributes.Level6 # </span></li>
<li><span>Level1: #= Attributes.Level4 # </span></li>
<li><span>Level4 #= Attributes.Level1 # </span></li>
</ul>
</div>
<br></br>
</ClientItemTemplate>
<WebServiceSettings Method="GetAccount" Path="InvestmentDropDownWebService.asmx" />
</telerik:RadComboBox>
this is Rad combo box html code and call web service
After running the project i will recieved this error please help me
The type Telerik.Web.UI.RadComboBoxContext is not supported because it implements IDictionary.
I have gone through the same problem. I cope with this issue as follows. Change your line of
[WebMethod]
to
[WebMethod(EnableSession = true)] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
And also, Add an attribute of
WebServiceSettings-UseHttpGet="true"
in your ASPX code of RadCombo Box. My problem was solved after doing all that. Hope it will work for you as well! :)
这篇关于Telerik Rad Combo使用Web服务创建问题填写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!