第一次做AJAX就遇到了问题,请大家帮忙
需求:一个成绩录入页面,DataGrid显示学生及成绩等项,其中三个是模板列分别是平时成绩,考试成绩和总成绩,需要每输入一个成绩后自动得到总成绩。问题:1。现在我只是在DataGrid中的第一条记录实现了上面的要求,而后面的记录却不响应,这是为什么呢?
2。如何实现焦点变换?比如通过箭头按钮或回车,焦点的顺序应该是第一条的平时成绩--考试成绩--再下一条的平时成绩,以此类推。
--------------------编程问答-------------------- 贴一下你后台和前台的代码 你是Ajax什么开发的? --------------------编程问答--------------------
第一个问题,不太明白你所说的不响应是什么意思
第二个问题:你可以在使用一些JS的方法,当控件上onkeydown 时判断一下是按的什么键,如果是方向可回车侧把焦点移到下一个上面,网上有很多的代码,先搜一下吧。 --------------------编程问答-------------------- 我的意思是说,在所显示出的记录里只有第一条记录实现了我所需要的功能,而后面的记录在输入平时成绩和考试成绩后总成绩没有任何变化。不知表达清楚没
代码如下:
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function addNumber()
{
createXMLHttpRequest();
var url= "Handler.ashx?Num1="+document.getElementById("num1").value+"&Num2="+document.getElementById("num2").value;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=showResult;
xmlHttp.send(null);
}
function showResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
document.getElementById("result").value=xmlHttp.responseText;
}
}
}
</script>
绑定列部分的代码:
<asp:TemplateColumn HeaderText="平时成绩">
<ItemTemplate>
<INPUT id="num1" style="WIDTH: 60px; HEIGHT: 21px" type="text" size="4" onkeyup="addNumber();">
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="考试成绩">
<ItemTemplate>
<INPUT id="num2" style="WIDTH: 60px; HEIGHT: 21px" type="text" size="4" onkeyup="addNumber();">
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="总成绩">
<ItemTemplate>
<INPUT id="result" style="WIDTH: 60px; HEIGHT: 21px" readOnly type="text" size="4">
</ItemTemplate> --------------------编程问答-------------------- 给你个例子 我现在主要是用AjaxPro了 这是我以前做的
功能实现的是2个html按钮 点立刻后从数据库读出datagird来显示 不刷新页面
var XmlHttp = new ActiveXObject("microsoft.XmlHttp");
function sendAJAX()
{
XmlHttp.Open("POST","WebForm2.aspx",true);
XmlHttp.onreadystatechange = ServerProcess ;
XmlHttp.Send(null);
}
function ServerProcess()
{
if(XmlHttp.readystate == 4||XmlHttp.readystate=='complete')
{
document.getElementById('nameList').innerHTML =XmlHttp.responsetext;
}
}
function wzl1()
{
setInterval('sendAJAX()',0);
}
function sendAJAXx()
{
XmlHttp.Open("POST","WebForm3.aspx",false);
XmlHttp.onreadystatechange = ServerProcess ;
XmlHttp.Send(null);
}
function ServerProcess()
{
if(XmlHttp.readystate == 4||XmlHttp.readystate=='complete')
{
document.getElementById('nameList').innerHTML =XmlHttp.responsetext;
}
}
function wzl2()
{
setInterval('sendAJAXx()',0);
}
function wzl()
{
alert('gfdgf')
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<div id="nameList"><FONT face="宋体"></FONT>
</div>
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 40px; POSITION: absolute; TOP: 32px" runat="server"
Width="480px" Height="192px"></asp:DataGrid>
<INPUT style="Z-INDEX: 102; LEFT: 48px; POSITION: absolute; TOP: 240px" type="button" value="Button1"
onclick="wzl1()"> <INPUT style="Z-INDEX: 103; LEFT: 120px; POSITION: absolute; TOP: 240px" type="button"
value="Button2" onclick="wzl2()">
</form>
</body>
Webform2 和Webform3使个准备好的页面 里面有2个datagrid的从数据库读了东西 在按了安钮以后把Webform2 和Webform3的 datagird的东西可以传到Webform1上来 Webform2 和Webform3你自己随便帮个datagrid加上数据源就可以了 --------------------编程问答-------------------- 多谢wangzhaoli1982了,我初学,刚接触AJAX,还不是很熟,你所说的AjaxPor对运行环境有什么要求吗?我现在还是用的Visual Studio.NET 2003,.NET framework1.1版的,本来是想装Ajax.net的,不过要求framework2,所以还没装. --------------------编程问答-------------------- AjaxPor没什么要求是一个dll文件 AjaxPor有对2003和对2005开发的
我也是用2003的 --------------------编程问答-------------------- 嗯,我已经加入引用了,还需要再研究.
不过我还是不明白,按我上面的做法,为什么只有第一条记录是正确的,后而面的却没有实现AJAX的效果呢?程序应该是对的,会不会是在模板列里有什么问题呢? --------------------编程问答-------------------- 呵呵 不晓得了 XMLHttp的我已经没研究了 帮你顶 --------------------编程问答-------------------- 帮你顶了...
--------------------编程问答-------------------- 好东西 study.... --------------------编程问答-------------------- 我也学习一下......顶
补充:.NET技术 , ASP.NET