我在表单中有20个ajax可编辑的下拉列表。每个下拉列表都会根据其他选定的索引更改进行绑定。
我有很多来自数据库的记录用于绑定和一些操作。什么表现会更好?
我应该使用此代码来绑定下拉列表:
var XmlHttp;
//Creating object of XMLHTTP For AJAX Method
function CreateXmlHttp() {
//Creating object of XMLHTTP in IE
try {
XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oc) {
XmlHttp = null;
}
}
//Creating object of XMLHTTP in Mozilla and Safari
if (!XmlHttp && typeof XMLHttpRequest != "undefined") {
XmlHttp = new XMLHttpRequest();
}
}
function GetAppStoreLnk(id) {
var txtnameid = document.getElementById(id);
CreateXmlHttp();
var requestUrl = "Default2.aspx?id="+txtnameid+"";
if (XmlHttp) {
XmlHttp.onreadystatechange = function() { getschemename(txtnameid) };
XmlHttp.open("GET", requestUrl, true);
XmlHttp.send(null);
}
}
function getschemename(id)
{
// To make sure receiving response data from server is completed
if(XmlHttp.readyState == 4) {
// To make sure valid response is received from the server, 200 means response received is OK
if(XmlHttp.status == 200) {
var strData = XmlHttp.responseText;
if(strData != "") {
var arrscheme = strData.split("|");
id.length = 0;
for(i=0; i<arrscheme.length-1; i++) {
var strscheme = arrscheme[i];
var arrschnm = strscheme.split("~");
id.options[i] = new Option();
id.options[i].value = arrschnm[0];
id.options[i].text = arrschnm[1];
}
} else {
id.length = 0;
id.options[0] = new Option();
id.options[0].value = "";
id.options[0].text = "Scheme Name is not available";
}
document.body.style.cursor = "auto";
}
else {
id.length = 0;
id.options[0] = new Option();
id.options[0].value = "";
id.options[0].text = "server is not ready";
document.body.style.cursor = "auto";
}
}
}
或者我应该去UpdatePanel?
对我来说哪一个更好?
还是有更好的解决方案?
我想要非常好的表现,因为我们的客户经常使用此页面,我们希望确保它快速。
我正在使用vs2010。
答案 0 :(得分:0)
AJAX路线会更快。 UpdatePanel
使事情看起来像部分页面加载,但事实上,它会返回整个页面,只是更新UpdatePanel
中的部分。
答案 1 :(得分:0)
UpdatePanel不提供我们通常与AJAX关联的效率。例如,您是否知道,当UpdatePanel控件对服务器执行异步AJAX回调以更新其内容时,该请求会自动包含发布的所有内容ASP。 NET常规,包括状态显示。
应用程序更有效,更喜欢使用对WebMethods或页面方法的异步调用,而不是使用UpdatePanel。
答案 2 :(得分:0)
我同意其余的答案,邪恶的UpdatePanel
会降低页面的整体性能,因为为了工作,它必须来回发送整个页面 ViewState 命令在每个异步帖子上执行整个页面生命周期
通过简单的AJAX调用,这是完全不同的,调用只能获得您需要的数据并且性能要好得多
由于您使用的是WebForms,并且您的意图是填充20 DropDownLists
,您可以尝试使用AJAX调用来执行此操作,您会发现它显然可以正常工作。 但如果您尝试通过javascript / jquery将一个值添加到DropDownList
来发布您的网页,则会抛出异常。
这是因为ASP.Net WebForms默认验证发布到服务器的值,如果这些值未在ViewState中注册,则会因为试图篡改页面内容而引发安全性异常。
遗憾的是,您无法在控制级别禁用此选项,您必须在页面级别禁用它:
<%@ Page EnableEventValidation="false" ....
在WebForms中,不推荐虽然......