代码改变世界

telerik的RadAutoCompleteBox控件学习三

2013-03-01 22:17  y-z-f  阅读(1315)  评论(0编辑  收藏  举报

一、使用List<>

      1.放置相关控件

      2.在Page_Load中写下如下代码:    

1 protected void Page_Load(object sender, EventArgs e)
2         {
3             RadAutoCompleteBox1.DataSource = new List<string>(){"Europe","America","China"};
4         }

     然后在 F5 运行,

 

二、使用web服务

     1.放置相关控件

     2.在RadAutoCompleteBox控件中写下如下代码

1         <telerik:RadAutoCompleteBox ID="RadAutoCompleteBox1" Runat="server" DropDownHeight="150px" DropDownWidth="250px">
2             <WebServiceSettings Method="GetCompanyNames" Path="WebService1.asmx" />
3         </telerik:RadAutoCompleteBox>

     其中<WebServiceSettings> 标签标识需要调用的web服务,其中的Method表示需要调用的操作,而Path则是被调用的web服务的路径。

     3.新建web服务(主要其中的名称要和 Path 的一样或者你可以在新建好之后重新设置Path属性)

     4.编写web服务代码

      在编写前请将"[System.Web.Script.Services.ScriptService]"前面的注释去掉

     代码如下:

    

 1 [WebMethod]
 2         public AutoCompleteBoxData GetCompanyNames(object context)
 3         {
 4             string searchstr = ((Dictionary<string, object>)context)["Text"].ToString();
 5             DataTable table = GetChildNodes(searchstr);
 6             List<AutoCompleteBoxItemData> result = new List<AutoCompleteBoxItemData>();
 7             foreach( DataRow row in table.Rows )
 8             {
 9                 AutoCompleteBoxItemData item = new AutoCompleteBoxItemData();
10                 item.Text = row["title"].ToString();
11                 item.Value = row["id"].ToString();
12                 result.Add(item);
13             }
14             AutoCompleteBoxData data = new AutoCompleteBoxData();
15             data.Items = result.ToArray();
16             return data;
17         }
18 
19         public DataTable GetChildNodes( string searchstr)
20         {
21             SqlCommand com = new SqlCommand("select * from t_radauto where title like @searchstr + '%'");
22             com.Parameters.AddWithValue("searchstr", searchstr);
23             return GetData(com);
24         }
25 
26         public DataTable GetData(SqlCommand com)
27         {
28             com.Connection = new SqlConnection("Data Source=2012-20130129NF\\SQLEXPRESS;Initial Catalog=TEST;Integrated Security=True");
29             SqlDataAdapter adapter = new SqlDataAdapter(com);
30             DataTable table = new DataTable();
31             adapter.Fill(table);
32             return table;
33         }

 其中的数据库连接部分请根据自己的情况设定。

 关于如何获得用户该文本框中的内容,其实很简单,因为该控件的实例有一个Text属性可以获得。

三、客户端事件

   下面将是我们将要讲述的客户端的事件:

OnClientDropDownClosed

下拉框已经关闭时响应

OnClientDropDownClosing

下拉框正在关闭时响应

OnClientDropDownItemDataBound

下拉框中每显示一条数据则响应一次

OnClientDropDownOpened

下拉框已经打开时响应

OnClientDropDownOpening

下拉框正在打开时响应

OnClientEntryAdded

键入的值已经增加时响应

OnClientEntryAdding

键入的值正在增加时响应

OnClientEntryRemoved

键入的值已经移除时响应

OnClientEntryRemoving

键入的值正在移除时响应

OnClientLoad

控件初始化完成时响应

OnClientTextChanged

文本被修改时响应

  下面我们来监听这些事件,看看他们的执行顺序,以及对应的事件如何。

   无后台代码

  下面是页面的代码:

 

  1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="WebApplication1.WebForm4" %>
  2 
  3 <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
  4 
  5 <!DOCTYPE html>
  6 
  7 <html xmlns="http://www.w3.org/1999/xhtml">
  8 <head runat="server">
  9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 10     <title></title>
 11     <script type="text/javascript" id="telerikClientEvents1">
 12 //<![CDATA[
 13 
 14         function logEvent(val) {
 15             document.getElementById('log').innerHTML += (val+'<br />');
 16         }
 17     function RadAutoCompleteBox1_DropDownClosed(sender,args)
 18     {
 19         logEvent('drop down closed');
 20     }
 21 //]]>
 22 </script>
 23     <script type="text/javascript" id="telerikClientEvents2">
 24 //<![CDATA[
 25 
 26     function RadAutoCompleteBox1_DropDownClosing(sender,args)
 27     {
 28         logEvent('drop down closing');
 29     }
 30 //]]>
 31 </script><script type="text/javascript" id="telerikClientEvents3">
 32 //<![CDATA[
 33 
 34     function RadAutoCompleteBox1_DropDownItemDataBound(sender,args)
 35     {
 36         //Add JavaScript handler code here
 37         logEvent('drop down item data bound');
 38     }
 39 //]]>
 40 </script><script type="text/javascript" id="telerikClientEvents4">
 41 //<![CDATA[
 42 
 43     function RadAutoCompleteBox1_DropDownOpened(sender,args)
 44     {
 45         //Add JavaScript handler code here
 46         logEvent('drop down opened');
 47     }
 48 //]]>
 49 </script><script type="text/javascript" id="telerikClientEvents5">
 50 //<![CDATA[
 51 
 52     function RadAutoCompleteBox1_DropDownOpening(sender,args)
 53     {
 54         //Add JavaScript handler code here
 55         logEvent('drop down opening');
 56     }
 57 //]]>
 58 </script><script type="text/javascript" id="telerikClientEvents6">
 59 //<![CDATA[
 60 
 61     function RadAutoCompleteBox1_EntryAdded(sender,args)
 62     {
 63         //Add JavaScript handler code here
 64         logEvent('entry added' + sender.get_text());
 65     }
 66 //]]>
 67 </script><script type="text/javascript" id="telerikClientEvents7">
 68 //<![CDATA[
 69 
 70     function RadAutoCompleteBox1_EntryAdding(sender,args)
 71     {
 72         //Add JavaScript handler code here
 73         logEvent('entry adding' + sender.get_text());
 74     }
 75 //]]>
 76 </script><script type="text/javascript" id="telerikClientEvents8">
 77 //<![CDATA[
 78 
 79     function RadAutoCompleteBox1_EntryRemoved(sender,args)
 80     {
 81         //Add JavaScript handler code here
 82         logEvent('entry removed' + sender.get_text());
 83     }
 84 //]]>
 85 </script><script type="text/javascript" id="telerikClientEvents9">
 86 //<![CDATA[
 87 
 88     function RadAutoCompleteBox1_EntryRemoving(sender,args)
 89     {
 90         //Add JavaScript handler code here
 91         logEvent('entry removing' + sender.get_text());
 92     }
 93 //]]>
 94 </script><script type="text/javascript" id="telerikClientEvents10">
 95 //<![CDATA[
 96 
 97     function RadAutoCompleteBox1_Load(sender,args)
 98     {
 99         //Add JavaScript handler code here
100         logEvent('load');
101     }
102 //]]>
103 </script><script type="text/javascript" id="telerikClientEvents11">
104 //<![CDATA[
105 
106     function RadAutoCompleteBox1_TextChanged(sender,args)
107     {
108         //Add JavaScript handler code here
109         logEvent('text changed' + sender.get_text());
110     }
111 //]]>
112 </script>
113 </head>
114 <body>
115     <form id="form1" runat="server">
116     <div>
117         <telerik:RadAutoCompleteBox ID="RadAutoCompleteBox1" runat="server" DataSourceID="SqlDataSource1"
118              DataTextField="title" DataValueField="id" DropDownHeight="150px" 
119             DropDownWidth="250px" Filter="StartsWith" 
120             OnClientDropDownClosed="RadAutoCompleteBox1_DropDownClosed" 
121             OnClientDropDownClosing="RadAutoCompleteBox1_DropDownClosing" 
122             OnClientDropDownItemDataBound="RadAutoCompleteBox1_DropDownItemDataBound" 
123             OnClientDropDownOpened="RadAutoCompleteBox1_DropDownOpened" 
124             OnClientDropDownOpening="RadAutoCompleteBox1_DropDownOpening" 
125             OnClientEntryAdded="RadAutoCompleteBox1_EntryAdded" 
126             OnClientEntryAdding="RadAutoCompleteBox1_EntryAdding" 
127             OnClientEntryRemoved="RadAutoCompleteBox1_EntryRemoved" 
128             OnClientEntryRemoving="RadAutoCompleteBox1_EntryRemoving" 
129             OnClientLoad="RadAutoCompleteBox1_Load" 
130             OnClientTextChanged="RadAutoCompleteBox1_TextChanged" 
131             InputType="Text"></telerik:RadAutoCompleteBox>
132         <telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
133         </telerik:RadScriptManager>
134         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TESTConnectionString %>" SelectCommand="SELECT * FROM [t_radauto]"></asp:SqlDataSource>
135     </div>
136     <div id="log" >
137     </div>
138     </form>
139 </body>
140 </html>

 这样我们就清楚的看见事件的响应规律了。

后面将会按照官方的说明书进行学习将会更加详细