Telerik Rad Combo使用Web服务创建问题填写 [英] Telerik Rad Combo fill by using web service creating problem

查看:63
本文介绍了Telerik Rad Combo使用Web服务创建问题填写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆