现要求我实现以下功能:
在一个aspx页面里,上面一排按钮,下面一个datagrid控件。要求按一按钮刷新datagrid的内容变化,但是要求上面按钮不刷新。除了将datagrid放在ifarme里面外,有没有方法用ajax实现这种功能。希望高手给除解决方案,最好贴点代码!
在一个aspx页面里,上面一排按钮,下面一个datagrid控件。要求按一按钮刷新datagrid的内容变化,但是要求上面按钮不刷新。除了将datagrid放在ifarme里面外,有没有方法用ajax实现这种功能。希望高手给除解决方案,最好贴点代码!
解决方案 »
- 急求ASP.NET MVC电子文档,收到就结粘给高分
- 请教存储过程问题:从数据类型 nvarchar 转换为 float 时出错。
- 根据文字生成text
- 高手请进:vbscript调用activex中带指针参数的函数问题
- 关于框架的问题
- 页面的动态生成问题??
- 奇怪的 web service 问题
- 一个小问题请高手帮帮忙,急ing !!!!!
- 求助:FreeTextBox的问题?(问题解决就结贴)
- 来者有分,想用asp.net搞个类似网上文件夹(硬盘)的东西,给点思路
- 新手问2个问题?
- 为什么我的offsetTop,document.body.currentStyle.marginTop等等取不到值
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="ajax.Default2" %>
<script type="text/jscript">
function ff()
{
ajax.Default2.AddTwo(22,33,getAdd); //AddTwo的代码是在Default2.aspx.cs文件里面实现的
}
function getAdd(rel)
{
var ff=document.getElementById("dd");
ff.innerHTML=rel.value;
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(rel.value);
nodes=xmlDoc.getElementsByTagName("cname");
var j=document.all.Select1.options.length;
for( var n=0;n<j;n++)
{
document.all.Select1.options.remove(j);
}
j=0;
for(var i = 0; i < nodes.length; i++)
{
document.all.Select1.options[j] = new Option(nodes[i].firstChild.data,i);
j=j+1;
}
}
</script>下面的代码是在web.config配置文件里添加的,用于注册ajax
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>下面的是后台代码,首先加命名空间ajax,接着在page_load事件里面注册在后台处理的类Default,
用属性[AjaxPro.AjaxMethod]声明用于在前台调用的方法
namespace ajax
{
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Default2));
}
[AjaxPro.AjaxMethod]
public string AddTwo(int firstInt, int secondInt)
{
return GetCity("server='192.168.1.25';database='hydb';uid='sa';pwd='123'","1");
}
public string GetCity(string conn, string pid)
{
using (SqlConnection con =new SqlConnection(conn))
{
SqlCommand cmd = new SqlCommand("GetCity", con);
cmd.Parameters.Add("@pid", SqlDbType.VarChar, 10);
cmd.Parameters["@pid"].Value = pid;
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "city");
string ss= ds.GetXml();
return ss;
//dd.DataSource = ds.Tables["city"].DefaultView;
//dd.DataBind();
}
}
}
}
当然首先要引用AjaxPro.dll文件这是我用的,你改改看看
1.将MagicAjax.dll Copy到BIN目录
2.在VS.NET的ToolBox里添加该DLL3.MagicAjax的压缩包里还附有两个js的脚本文件,一个是AjaxCallObject.js,一个是WebParts.js。前者是负责MagicAjax的普通事务的客户端表现的,后者则是专门针对WebParts的脚本。将两者都Copy到你的主要存放JS的目录下。以我的solution为例,我将此二者 Copy 到 站点根目录下的 script 文件夹里存放
4.修改Web.Config
在web.config的<configSections></configSections>
<section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
然后把datagrid放在ajaxpanel里面就可以了
那按钮是用客户端事件还是服务端事件?如何改变datagrid的数据源
用用这个,微软的新东西。
还有MagicAjax支持吗