Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)

    技术2022-05-11  66

    Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)

    (一) . 运行示例效果

    * 运行后用鼠标拖动蓝色的<马>到任意位置, 将浏览器关闭后, 再重新访问本页面, 会发现<马>仍然在您拖到的位置        

    (二). AjaxPro.NET简介

             首先对AjaxPro.NET作一下介绍, AjaxPro.NET是一个优秀的Ajax框架, 在实际应用中只要添加其DLL

             引用并进行简单的配置, 即可以非常方便的在客户端直接调用服务端方法, 来获取Tree节点.

    (三).使用AjaxPro.NET预配置

           1. 添加 AjaxPro.dll 文件的引用(示例代码中已经包含,直接COPY过来使用即可).

           2. 在Web.config文件中添加以下配置,           

    1  < httpHandlers > 2               < add verb = " POST,GET "  path = " ajaxpro/*.ashx "  type = " AjaxPro.AjaxHandlerFactory, AjaxPro "   />              3 </ httpHandlers >            3. 在要使用AjaxPro.NET框架的页面 *.aspx.cs 的 Page_Load事件中加如下代码:   AjaxPro.Utility.RegisterTypeForAjax( typeof (_Default));          4. 经过以上三步骤后, 只要在后台服务端的方法前面增加属性[AjaxMethod]后:    1   [AjaxMethod()]     //  or [AjaxPro.AjaxMethod]   2  public  ArrayList GetSearchItems(  string  strQuery )  3  {  4        // 生成数据源  5       ArrayList items  =   new  ArrayList();  6       items.Add( " King " );  7       items.Add( " Rose " );  8        return  items ;  9  10            就可以在客户端直接使用服务端方法, 非常方便, 客户端调用后台代码如下: var returnValue  =  后台代码类名.GetSearchItems(参数);

    (四). 代码

           1. 页面前台文件 AjaxDrag.aspx 代码如下:

     1  < head runat = " server " >  2       < title > Drag controls </ title >  3       < script language = " javascript "  src = " dom-drag.js " ></ script >  4  </ head >  5  < body onload = " javascript:ReadPosition(); " >  6       < form id = " form1 "  runat = " server " >  7       < div >  8           < table style = " width: 839px; height: 550px "  9                 background = " http://blog.csdn.net/images/blog_csdn_net/chengking/XiangQi.JPG " > 10               < tr > 11                   < td style = " width: 3px; height: 394px; "  align = " left "  atomicselection = " false "  valign = " top " 12                      background = " http://blog.csdn.net/images/blog_csdn_net/chengking/XiangQi.JPG " > 13                       < asp:Image ID = " Image1 "  runat = " server "  ImageAlign = " Middle "  ImageUrl = " ~/blue-ma.gif " 14                           style = " cursor:hand;position:absolute;display:none "   /> 15                  </ td > 16               </ tr > 17           </ table >              18      </ div >    19       </ form > 20       < script language = " javascript " >             21          var Image1  =  document.getElementById( " Image1 " ); 22          Drag.init(Image1);         23          Image1.onDragEnd  =  function(x, y) 24          { 25              WritePosition(x, y); 26          }      27           28          function WritePosition(x,y) 29          { 30              _Default.WritePosition(x, y); 31          }          32           33          function ReadPosition() 34          { 35              window.setTimeout( " _Default.ReadPosition(ReadPosition_callback) " , 600 )             36          } 37           38          function ReadPosition_callback(response)         39          {             40              var value  =  response.value;                41              Image1.style.left  =  value.X; 42              Image1.style.top   =  value.Y;  43              Image1.style.display  =   '' ; 44          }          45       </ script >          46  </ body >

           2. 页面后台文件 AjaxDrag.aspx.cs 代码如下:

     1  public  partial  class  _Default : System.Web.UI.Page   2  {  3       protected   void  Page_Load( object  sender, EventArgs e)  4      {  5         Utility.RegisterTypeForAjax( typeof (_Default));         6      }  7   8     [AjaxPro.AjaxMethod]  9      public   void  WritePosition( int  x,  int  y) 10     { 11         string  strFileName  =   this .GetFileName(); 12         if  (File.Exists(strFileName)) 13        { 14           StreamWriter sw  =   new  StreamWriter(strFileName,  false , System.Text.Encoding.UTF8); 15           sw.WriteLine(x.ToString()  +   " , "   +  y.ToString()); 16           sw.Flush(); 17           sw.Close(); 18        }             19     } 20  21     [AjaxPro.AjaxMethod] 22      public  Point ReadPosition() 23     { 24        StreamReader sr  =   new  StreamReader( this .GetFileName(), System.Text.Encoding.Default); 25         string  str_X_Y  =   "" ; 26         while  (sr.Peek()  >=   0 ) 27        { 28           str_X_Y  =  sr.ReadLine(); 29            break ; 30        } 31        sr.Close();    32         33         string [] str_x_y  =  str_X_Y.Split( ' , ' ); 34        Point p  =   new  Point(); 35        p.X  =   int .Parse(str_x_y[ 0 ]); 36        p.Y  =   int .Parse(str_x_y[ 1 ]); 37  38         return  p;       39     } 40  41      private   string  GetFileName() 42     { 43         string  rootCatoryName  =   " AjaxDragControl " ; 44         string  strPath  =  Server.MapPath( " . " ); 45        strPath  =  strPath.Substring( 0 , strPath.IndexOf(rootCatoryName)  +  rootCatoryName.Length); 46         string  strFileName  =  Path.Combine(strPath,  " save.txt " ); 47         return  strFileName; 48     } 49  }

    (五). 示例代码下载

             http://www.cnitblog.com/Files/ChengKing/AjaxDragControl.rar

    (六). 相关文章请看

              1. 在WinForm中实现拖动效果, 请看:

                   http://blog.csdn.net/chengking/archive/2005/10/07/496739.aspx

              2. 使用键盘模拟鼠标, 请看:

                   http://blog.csdn.net/chengking/archive/2005/10/07/496715.aspx

     

    最新回复(0)