Dev系列控件的AJAX使用Demo

 一.Dev Data Edit控件通用属性以及方法:javascript

    属性html

    1.GetEnabled():返回控件是否为可操做状态java

    2.GetText():返回控件的Text的值编程

    3.SetEnabled():设置控件状态服务器

    4.GetValue():返回控件的Value异步

    5.SetValue():设置控件的Valueide

   注意:在客户端进行Dev控件编程必须为Dev控件指定一个客户端的名称即ClientInstanceName,客户端直接根据ClientInstanceName来进行相关的post

操做。一个简单的例子来从客户端改变AspxTextBox的值插件

<head id="Head1" runat="server">
    <title>ClientTest</title>
    <script language="javascript" type="text/javascript">
        function onSendText(s, e) {
            //获得AspxTextBox1的值
            var txt = txtSend.GetText();
            //根据AspxTextBox1的值设置AspxTextBox2的值
            var sendtxt = "Get " + txt + " from Client";
            txtGet.SetText(sendtxt);

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <dxe:aspxtextbox id="ASPxTextBox1" runat="server" width="170px" clientinstancename="txtSend"
            clientenabled="true">
          </dxe:aspxtextbox>
        <dxe:aspxbutton id="ASPxButton1" runat="server" text="Post" autopostback="False"
            clientinstancename="btnSend">
              <ClientSideEvents Click="function(s, e) {
         onSendText(s,e);
     }" />
          </dxe:aspxbutton>
        <dxe:aspxtextbox id="ASPxTextBox2" runat="server" width="170px" clientinstancename="txtGet"
            clientenabled="true">
          </dxe:aspxtextbox>
    </div>
    </form>
</body>

 运行效果以下图:

 orm

  怎么样?是否是和ASP.NET AJAX有殊途同归之妙。

 

      接下来,第二个例子,ASPXComBox下拉框无刷新连动

固然,已经有不少种方法,AJAX插件来实现下拉框的级联连动更新。Dev的下拉框也不例外。在介绍这个例子之间,首先节点介绍下Dev的控件是如何

实现客户端,服务端异步通讯的。

从客户端到服务端的通讯:PerformCallback()。PerformCallback就是从客户端到服务端的桥梁,它是单向的只能从客户端发起到服务端。在Perform

Callback()括号当中咱们能够传递一些参数到服务器端,从而达到更新效果。

服务器端的接受并异步刷新:Callback()。当从服务端PerformCallback唤醒之后,响应的控件Callback事件开始执行(控件的服务器事件中能够找到)。

而且经过Parameter键值来获取从客户端传过来的值进行相关的处理。

客户端:

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>PerTest</title>
    <script language="javascript" type="text/javascript">
        //客户端处理下拉框选择项改变事件,client端aspxcombox下拉框改变事件为SelectedIndexChanged
        function OnEmployeesChanged(s) {
            //PerformCallback事件实际上时dev系列控件客户端服务器端异步通讯的"大使",经过PerfromCallback事件
            //将客户端的通讯要求传递给服务端,在服务端经过控件的callback事件来接受相关参数并进行页面异步刷新
            devcbxChi.PerformCallback(s.GetValue());
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <dxe:aspxcombobox runat="server" id="devcbxPar2" dropdownstyle="DropDownList" enableincrementalfiltering="True"
            enablesynchronization="False" clientinstancename="devcbxPar2" width="160px">
                         <ClientSideEvents SelectedIndexChanged="function(s, e) { OnEmployeesChanged(s); }"></ClientSideEvents>
                     </dxe:aspxcombobox>
        <dxe:aspxcombobox runat="server" id="devcbxChi" dropdownstyle="DropDownList" enableincrementalfiltering="True"
            enablesynchronization="False" clientinstancename="devcbxChi" width="160px" oncallback="devcbxChi_Callback">
                     </dxe:aspxcombobox>
    </div>
    </form>
</body>
</html>

  服务端:

using DevExpress.Web.ASPxEditors;
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["northwind"].ConnectionString);
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            devcbxPar2.Items.Clear();
            string selectSQL = "select EmployeeID,FirstName from Employees";
            SqlDataAdapter SDA = new SqlDataAdapter(selectSQL, conn);
            DataSet DS = new DataSet();
            SDA.Fill(DS);
            for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
            {
                devcbxPar2.Items.Add(new ListEditItem(DS.Tables[0].Rows[i]["FirstName"].ToString().Trim(), DS.Tables[0].Rows[i]["EmployeeID"]
                    .ToString().Trim()));
            }
        }
    }
    protected void devcbxChi_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
    {
        //获得从客户端传递过来的参数来进行异步通讯响应
        string parm = e.Parameter.Trim();
        string selectSQL = "select TerritoryID from EmployeeTerritories where EmployeeID='" + parm + "'";
        SqlDataAdapter SDA = new SqlDataAdapter(selectSQL, conn);
        DataSet DS = new DataSet();
        SDA.Fill(DS);
        devcbxChi.Items.Clear();
        for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
        {
            devcbxChi.Items.Add(DS.Tables[0].Rows[i]["TerritoryID"].ToString().Trim());
        }
        devcbxChi.SelectedIndex = 0;
    }

  

OK,一个简单的异步刷新下拉框连动实现。那么思索下dev控件的异步通讯,既然这么容易能实现从客户端服务端的异步刷新,那么要求再高点,怎样经过服务端的发起来异步改变客户端的元素呢?咱们把上面的程序稍微改下

<head id="Head1" runat="server">
    <title>PerTest</title>
    <script language="javascript" type="text/javascript">
        //客户端处理下拉框选择项改变事件,client端aspxcombox下拉框改变事件为SelectedIndexChanged
        function OnEmployeesChanged(s) {
            //PerformCallback事件实际上时dev系列控件客户端服务器端异步通讯的"大使",经过PerfromCallback事件
            //将客户端的通讯要求传递给服务端,在服务端经过控件的callback事件来接受相关参数并进行页面异步刷新
            devcbxChi.PerformCallback(s.GetValue());
        }
        function onEndCallback(s, e) {
            var result = s.cp_result;
            txtresult.SetText(result);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <dxe:aspxcombobox runat="server" id="devcbxPar2" dropdownstyle="DropDownList" enableincrementalfiltering="True"
            enablesynchronization="False" clientinstancename="devcbxPar2" width="160px">
                         <ClientSideEvents SelectedIndexChanged="function(s, e) { OnEmployeesChanged(s); }"></ClientSideEvents>
                     </dxe:aspxcombobox>
        <dxe:aspxcombobox runat="server" id="devcbxChi" enableincrementalfiltering="True"
            enablesynchronization="False" clientinstancename="devcbxChi" width="160px" oncallback="devcbxChi_Callback"
            valuetype="System.String">
          <ClientSideEvents EndCallback="function(s, e) {
    onEndCallback(s,e);
}" />
                     </dxe:aspxcombobox>
        <dxe:aspxtextbox id="ASPxTextBox1" runat="server" width="170px" clientinstancename="txtresult"
            forecolor="Red">
        </dxe:aspxtextbox>
    </div>
    </form>
</body>

  服务端:

    protected void devcbxChi_Callback(object source, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
    {
        //获得从客户端传递过来的参数来进行异步通讯响应
        string parm = e.Parameter.Trim();
        string selectSQL = "select TerritoryID from EmployeeTerritories where EmployeeID='" + parm + "'";
        SqlDataAdapter SDA = new SqlDataAdapter(selectSQL, conn);
        DataSet DS = new DataSet();
        SDA.Fill(DS);
        devcbxChi.Items.Clear();
        for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
        {
            devcbxChi.Items.Add(DS.Tables[0].Rows[i]["TerritoryID"].ToString().Trim());
        }
        devcbxChi.SelectedIndex = 0;
        //定义JSProperties参数值回传给客户端
        devcbxChi.JSProperties["cp_result"] = "更新成功";
    }

  

看看效果:


  没错"更新成功"是从服务端回传给了客户端!是否是很简单?一个重要的属性JSProperties

JSProperties属性能够从服务端的参数传到客户端。咱们能够定义不少个参数,可是在定义JSProperties属性的参数时,必定要记得参数

的值以"cp"开头,以此来与Dev的基类区别开来。接下来咱们在控件的客户端EndCallback()事件来接受JSProperties的参数来进行相关

的设置。

     Dev的Data Edit相关控件的客户端编程也很是强大,让咱们很是轻松的就能够实现异步通讯。将Dev的客户端,服务端编程相结合,咱们

的程序将效率更高,实现效果也更好。

相关文章
相关标签/搜索