.net怎么样用ajax实现带母板页的局部刷新?
RT,分类导航是在母版页里的,现在点击导航链接整个页面都会刷新,我用框架试了,局部刷新可以实现,但底部框架高度不能自适应,在网上看了很多种方法也没有解决。。现在想用ajax解决,我还是个菜鸟,网上很多教程看不明白,求大侠们帮帮忙,能给个详细点的教程,真心谢谢大家了!
如果有其他方法能解决这个问题,也希望大家多多相助
ajax控件要怎样使用?要放在哪里?
[解决办法]
底部框架的高度不能自适应这明显的是网页的布局问题
也就是css问题
ajax控件直接拖放就行
这个甚至可以说与net根本没什么太大关系的一个知识点
在最上面放一个scriptmanager
在你要更新的地方用updatepanel 套住
就完了
不要打着菜鸟的头衔 去问这个问题
你倒不如静下心来去了解ajax控件
[解决办法]
给你一个我以前写的页面吧,也是用的ajax,读取数据。
-------------------------------------------------------Javascript------------------------------------
//创建XMLHttpRequest对象
var request = false;
try {
request = new XMLHttpRequest(); //火狐、Opera等
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");//IE7、8
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP"); //IE6及之前版本
} catch (failed) {
request = false;
}
}
}
if (!request) {
alert("Error initializing XMLHttpRequest!");
}
function getTotal(obj) {
var url = "WorkloadAffirm_Handler.ashx?";
var para = obj.value;
request.open("post", url, true);
request.onreadystatechange = updatePage;
//使用post传值方式,必须设置请求标头
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
request.send(para);
}
//取回数据后,刷新页面
function updatePage() {
if (request.readyState == 4 && request.status == 200) {
var data = request.responseText;
var dataJson = eval(data)[0];
//用户提交过,就禁用提交控件
if (dataJson.Check == 'true') {
var btnSubmit = document.getElementById('<%=btnSubmit.ClientID %>');
btnSubmit.disabled = true;
btnSubmit.value = '已提交';
}
document.getElementById('<%=lblOrderTotal.ClientID %>').innerText = dataJson.Total;
document.getElementById('<%=lblEdit.ClientID %>').innerText = dataJson.Edit;
document.getElementById('<%=lblAffirmTotal.ClientID %>').innerText = dataJson.Affirm;
document.getElementById('<%=lblAffirmPer.ClientID %>').innerText = dataJson.AffirmPer;
}
}
---------------------------------------------------ashx-------------------------------------------------------
<%@ WebHandler Language="C#" Class="WorkloadAffirm_Handler" %>
using System;
using System.Web;
public class WorkloadAffirm_Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
// string str = "[{'name':\"wang\",\"age\":12}]";
string day = "";
//检索今天的数据
if (context.Request.Params[0] == "today")
{
day = "0";
}
//检索昨天的数据
else
{
day = "1";
}
string result = GetWorkload(day);
//当客户端使用post方式时,必须清空
context.Response.Clear();
context.Response.Write(result);
context.Response.End();
}
/// <summary>
/// 检索数据
/// </summary>
/// <param name="day"></param>
/// <returns></returns>
private string GetWorkload(string day)
{
string result = "[{";
System.Data.DataSet ds;
//检查当天是否提交过确认工单量
string strCheck = "select Workload_ID from Workload where DATEDIFF(day,Workload_Time,getdate())=" + day;
ds = DataControl.ExecuteDataset(strCheck);
if (ds != null && ds.Tables[0].Rows.Count > 0)//提交过
{
result += "'Check':'true'";
}
//没有提交过
else
{
result += "'Check':'false'";
}
ds = null;
string strSql = "create table #tempAffirm(edit int,affirm int,total int) "
+ " insert into #tempAffirm values( "
+ " (select COUNT(CALLBILL_ID) as a from CALLBILL where CALLBILL_RESSTATE =0 and DATEDIFF(day,callbill_stime,getdate())=" + day + " and CALLBILL_RRESULT=6),"
+ " (select COUNT(CALLBILL_ID) as b from CALLBILL where CALLBILL_RESSTATE =0 and DATEDIFF(day,callbill_stime,getdate())=" + day + " and CALLBILL_RRESULT!=0) ,"
+ " (select COUNT(CALLBILL_ID) as c from CALLBILL where CALLBILL_RESSTATE =0 and DATEDIFF(day,callbill_stime,getdate())=" + day + " )"
+ " )"
+ " select * from #tempAffirm"
+ " drop table #tempAffirm";
ds = DataControl.ExecuteDataset(strSql);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
result += ",'Edit':'" + ds.Tables[0].Rows[0][0].ToString() + "'";
result += ",'Affirm':'" + ds.Tables[0].Rows[0][1].ToString() + "'";
result += ",'Total':'" + ds.Tables[0].Rows[0][2].ToString() + "'";
if (ds.Tables[0].Rows[0][2].ToString() != "0")
{
string affirmPer = (double.Parse(ds.Tables[0].Rows[0][1].ToString()) / double.Parse(ds.Tables[0].Rows[0][2].ToString())).ToString("p");
result += ",'AffirmPer':'" + affirmPer + "'";
}
}
return result + "}]";
}
public bool IsReusable
{
get
{
return false;
}
}
}