Ajax.net中与服务器控件的交互使用

ajax|服务器|交互|控件

  前两天在网上下了个ajax组件体验了一下,感觉很不错。但后来开始想怎样能让它跟server控件交互呢,例如我上输出一个列表,就只有用js一条一条html的输出吗?不!!现在我说说怎样与 datagrid交互。

  注:ajax.net的组件可以到此网下载,我用的是for .net 1.1版本的。http://ajax.schwarz-interactive.de/

  1. 在引用中添加引用Ajax.dll。(这个很废话)

  2.在web.config中建立HttpHandler(这个当然是在system.web串里的)

<httpHandlers>
    <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers> 

  3.在Global的Application_Start里加上个设置

        protected void Application_Start(Object sender, EventArgs e)
       {
            Ajax.Utility.HandlerPath = "ajax";
        }

  4.新建一个类DemoMethods,这个类里面提供了更新数据库和输出列表的方法。其实主要思想就是获得控件运行后生成的html,然后输出。 

 1        [Ajax.AjaxMethod]
 2        public int AddAjaxTable(string name)
 3        {
 4            //输入一个字符串,然后更新
 5            SqlConnection conn = new SqlConnection( System.Configuration.ConfigurationSettings.AppSettings["connectionString"] );
 6            SqlCommand cmd = new SqlCommand("insert into ajaxTable(name) values('"+name+"')", conn);
 7            cmd.Connection.Open();
 8            int result = cmd.ExecuteNonQuery();
 9            conn.Dispose();
10            cmd.Dispose();
11            return result;
12        }
13
14        [Ajax.AjaxMethod]
15        public string GetAjaxTable()
16        {
17            //这个方法就是拿到datagrid生成出来的html
18            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
19            SqlCommand cmd = new SqlCommand("select * from ajaxTable order by id", conn);
20            SqlDataAdapter ap = new SqlDataAdapter( cmd );
21            DataSet ds = new DataSet();
22            ap.SelectCommand.Connection.Open();
23            ap.Fill( ds, "db" );
24
25            conn.Dispose();
26            cmd.Dispose();
27
28            //实例化一个datagird类并设置好数据源
29            DataGrid dg = new DataGrid();
30            dg.DataSource = ds.Tables["db"];
31            dg.DataBind();
32
33            //实例化一个HtmlTextWriter的类
34            System.Text.StringBuilder strb = new System.Text.StringBuilder();
35            System.IO.StringWriter sw = new System.IO.StringWriter( strb );
36            System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter( sw );
37
38            //执行控件的render并输出到HtmlTextWriter里
39            dg.RenderControl( htw );
40
41            string s = strb.ToString();
42
43            return s;//最后就是返回这个html啦
44        }

  5.然后再建一个default.js文件,用作存放 js方法 function AddAjax(name)

{
 DemoMethods.AddAjaxTable(name);
 LoadGrid();
}

function LoadGrid()
{
 var cc=document.getElementById("UCtd");
 cc.innerHTML=DemoMethods.GetAjaxTable().value;
}

  6.建一个default.aspx,在pageload事件里面加个注册的东西

         private void Page_Load(object sender, System.EventArgs e)
        {
            Ajax.Utility.RegisterTypeForAjax(typeof(AjaxTestPrjLib.DemoMethods));
        }

  7.最后就是default.aspx的html和js了,呵呵

<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="AjaxTextPrjWeb._default" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>default</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script language="javascript" src="default.js"></script>
    </HEAD>
    <body >
        <form id="Form1" method="post" runat="server">
            <INPUT type="text" id="AddTextBox" maxlength="10"><INPUT type="button" value="添加" >
            <table>
                <tr>
                    <td id="UCtd"></td>
                </tr>
            </table>
        </form>
    </body>
</HTML>

  这样,就能使用datagrid来输出表格了,呵呵。总体思路其实还是比较简单的,日后有兄弟做出更好的,请贴出来,而我也会继续努力的。谢谢....继续工作去....

  原文地址:http://jasmineou.cnblogs.com/archive/2006/01/19/244312.html#320070

  三个月之前,我写了一篇关于ajax.net的post,大家看完之后反响挺大的。于是我一直想再深入研究一下,看看能不能作一些改进,但正在这时候,我的感情生活发生了些很悲惨的事...于是一直无心恋战。三个月后的现在,我重新拿起久久没碰过的vs.net,开始重新投入工作和学习。其实我这个也不算是什么研究,我对ajax.net框架的了解和ajax的原理只是很片面,只是我想到别人没有想的东西罢了,希望大家以后多多交流,希望我这篇post对大家有帮助。

  注:这次用的是asp.net2.0,控件是GridView,还在用asp.net1.1的朋友不好意思了。而这次使用的ajax.net框架也有点变动,用了AjaxPro for .net2.0(其实也一样)。

  这次的代码我就不详尽啦,因为实在还是比较多的。关于ajax.net的设置可以参照这篇文章ajax.net中与server控件的交互使用(一),demo可以在这里看http://210.21.123.253/AjaxTestPrjWeb/Default.aspx(这是我的机子,大家要爱护啊,不要随便乱搞啊,demo时间由早上9:30-18:00,还要请大家注意右上角的Loading字样...loading的时候就不要乱按了),源文件就到这里下载http://www.cnblogs.com/Files/jasmineou/AjaxTestPrj2.0.rar

  我解析下具体思想,其实就是将GridView放到一个UC里面,然后将UC的代码分离去类库里,然后页面的ajax向服务器要UC生成出来的html,然后再用javascript写到页面里....~其实这个只是单单用ajax实现没刷新罢了,在性能方面并没有太多的提高。高手可能会笑我用这些实质上不算是用上ajax....呵呵~这个我承认。

  PS:有任何疑问可以加我的QQ:50446177,验证信息写cnblogs with ajax

时间: 2024-10-19 05:39:59

Ajax.net中与服务器控件的交互使用的相关文章

Ajax应用中常见问题

1.ajax,action中response返回的xml文档格式错误时,eclipse debug进入不到action中. 2.ajax缓存问题,需要加入xmlHttp.setRequestHeader("If-Modified-Since","0″);便可解决. 3.如果不是ajax提交,而设置了PrintWriter out = response.getWriter();则jsp会产生中文乱码. 4.ajax返回xml乱码的原因 response.setContentTy

网络中的Ajax:在Ajax架构中聚合来自多个站点的内容所面临的安全性和拓扑问题

在试图将 Asynchronous JavaScript and XML (Ajax) 编程技术引入到网络环境中时,常常会遇到一些困难. 简介 Ajax 架构一个让人兴奋的特性就是能够聚合来自多个数据源的内容并由此创建一个全新的站点或 Web 应用程序.比方说,您可以创建这样一个 Web 应用程序,它能综合各种气象服务的信息来给出几个滑雪场的天气信息.这些天气信息原来可以通过几个 Web 站点得到,而您的应用程序将这些数据一同带到了一个 Web 页上.这类应用程序通常都被称为 mashup.无需

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

Silverlight中内置了对于HTML.客户端脚本等的支持,本文为如何在 Silverlight 2中与HTML DOM交互第二部分.在第一部分中主要介绍了如何访问 和修改已有的HTML DOM,我们还可以完全创建一个新的DOM元素或者移除一个已 有的DOM元素,除此之外,我们还可以为DOM元素添加事件处理. 创建DOM元素 首先我们来看如何创建一个新的DOM元素,最终的效果如下,当我们在文本框 中输入文字后,单击创建,将在上面的区域中创建一个li元素. 先来定义一下HTML页面,甚至Sil

如何从jQuery的ajax请求中删除X-Requested-With

 X-Requested-With常用于判断是不是ajax请求,ajax请求中删除X-Requested-With的方法如下,感兴趣的朋友可以参考下 X-Requested-With常用于判断是不是ajax请求    但是有时我们会有需要删除X-Requested-With的情况    下面介绍一种方式 js代码   代码如下: $.ajax({  url: 'http://www.zhangruifeng.com',  beforeSend: function( xhr ) {  xhr.se

请问怎么在网页文本编辑器中插入服务器控件啊?

问题描述 请问怎么在网页文本编辑器中插入服务器控件啊? 如图一:想插入一个服务器控件Textbox 然后回到界面上,什么都没有 再回去插入的地方,居然多了这样的标签 不解 解决方案 你怎么插入的?客户端控件没有asp:textbox这种控件,asp:textbox这种控件最后生成的是input type="text"控件 将你的asp:textbox放入ueditor的script标签里面给asp.net编译生成input type="text",ueditor会自

在局域网AD内,有些网站可以访问,有些网站无法访问,IE左下角提示AJAX调用中...

问题描述 ajax调用中....,显示很长时间,整个系统变得十分缓慢,过了很长时间(十几.二十几分钟后),还能访问.我的电脑在局域网内,AD域环境下,XP系统,IE8浏览器有些电脑可以正常访问这些网站.网站应该没有问题.是IE的问题呢,还是网络问题?dns解析问题?请高手解答 解决方案 解决方案二:能否断点看下,是否是ajax到了后台出现什么状况了呢?解决方案三:可能是网段的问题解决方案四:怎么断点?不明白解决方案五:网段应该没有问题,其他计算机也在同网段下解决方案六:显示很慢的电脑上ping下

本地html页面ajax与服务端进行数据交互的问题?

问题描述 本地html页面ajax与服务端进行数据交互的问题? 这个是本地ajax代码 $.ajax({ type:"post", url:"http://10.242.106.92:8080/Android_server/servlet", data:{name:username,password:userpassword}, cache:false, dataType:"json", success:function(data){ alert

jdbc-SpringMVC结构有没有可能在不基于XML的方式中与数据库发生交互?

问题描述 SpringMVC结构有没有可能在不基于XML的方式中与数据库发生交互? 小弟之前使用Sping框架的时候SQL语言都是写在XML中的,如: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dt

关于Ajax请求中传输中文乱码问题的解决方案_AJAX相关

今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题. 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: "Post", contentType: "application/x-www-form-urlencoded; charset=utf-8", url: "http://localhost/CRM/Ashx/HandK