ورود

View Full Version : پر کردن select موقع لود صفحه با آجاکس در Asp.net



minaalamshahi
یک شنبه 10 مهر 1390, 11:41 صبح
با سلام
من یه drop down دارم که می خوام موقع لود صفحه پر بشه که به روش زیر انجامش دادم اما به onload که می رسه گیر می کنه
برای اینکه قبل از اینکه codebehind رو بخونه میره onload جاوا اسکریپت رو می خونه
چطوری می تونم اول page load در codebehind رو اجرا کنم بعد بیام و تابع پر کردن dropdown رو در سمت جاوا اسکریپت اجرا کنم
البته به همین روش می خوام کار کنم با jQuery و ajax callback خود Asp نمی خوام اونا رو بلدم
ممنونم پیشاپیش


function CreateXMLHTTP() {
if (typeof XMLHttpRequest != "undefined") {
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
var aVersion = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
for (var i = 0; i < aVersion.length; i++) {
try {
xmlHttp = new ActiveXObject(aVersion[i]);
break;
}
catch (oError) {
//do nothing
}
}
}
}
function Proccess() {
CreateXMLHTTP();
if (xmlHttp != null) {
xmlHttp.open('Post', 'frmcomplaint.aspx', true);
xmlHttp.onreadystatechange = Update;
xmlHttp.setRequestHeader(Header, "true");
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(body);
}
else {
alert("problem");
}
}

function Update() {
if (xmlHttp.readyState == 4) {
if (Header == "drporg") {
var xmlDoc = xmlHttp.responseXML;
var nodesArray = xmlDoc.childNodes;
var result = nodesArray[0];
if (result.firstChild.text == "") {
var arrayorg = result.firstChild.text.split("~");
for (i = 0; i < arrayorg.length; i++) {
every = arrayorg[i].split(';');
document.getElementById('Drporg').add(new Option(every[0], every[1]));
}
document.getElementById('Drporg').selectedIndex = -1;

}
else if (Header == "send") {
var btnsend = document.getElementById("btnsend");
btnsend.value = "ارسال";
btnsend.disabled = "";
var xmlDoc = xmlHttp.responseXML;
var nodesArray = xmlDoc.childNodes;
var result = nodesArray[0];
alert(result.firstChild.text);
window.location.href = "Users/Customer/SecondStep/Accounting.aspx";
}
else if (Header == "drptype_use") {
document.getElementById("linkControlPanel").style["visibility"] = "hidden";
document.getElementById("linkExit").style["visibility"] = "hidden";
}
}
else {
else if (Header == "send") {
var btnsend = document.getElementById("btnsend");
btnsend.value = "صبر کنید";
btnsend.disabled = true;
}

}
}
function bindrporg() {
Header = "drporg";
Proccess();
}


در code behind


if (Request.Headers["drporg"] != null)
{
SqlConnection con = newSqlConnection();
con.ConnectionString = "Data Source=PC-13\\PC_13_2008;Initial Catalog=db;Integrated Security=True";
SqlDataAdapter sda1 = newSqlDataAdapter("select * from tTaxiOrganization", con);
DataSet ds1 = newDataSet();
sda1.Fill(ds1, "tbl1");

Response.ContentType = "text/xml";
Response.Charset = "utf-8";
Response.Write("<result>");
Response.Write("<msg>");
for (int i = 0; i < ds1.Tables["tbl1"].Rows.Count; i++)
Response.Write(ds1.Tables["tbl1"].Rows[i][0] + ";" + ds1.Tables["tbl1"].Rows[i][2] + "~");
Response.Write("</msg>");
Response.Write("</result>");
Response.End();
}

remove-me
یک شنبه 10 مهر 1390, 15:47 عصر
در کل من حال این Ajax رو ندارم. از jQuery استفاده کن. بصورت زیر:

var html = $("#myDiv").Load();

البته این متد صفحه رو رندر می کنه و نمی تونی خود مقدار html رو درون این منوت قرار بدی. اگر مثل من حال json رو نداری، آیتم هاتو با یه "|" از هم جدا کن. این جا یه foreach بزن بر اساس split('|'). حالا مقدار رو بگیر رو صفحه بساز.
اگرم حال json داری باید از تابع .ajax استقاده کنی.
یه فکر بهتر که (با متدولوژی تامبالیا پلاس هم همخونی داره) از update panel استفاده کن قال قضیه رو بکن.