Esto utiliza tecnología ajax, la actualización es segura y se completa a una velocidad que no conocemos. El método de página de sacrificio XMLHTTP, la razón por la que no podemos ver la actualización es porque todo el trabajo se realiza en la página de sacrificio. , En el interior "No podemos ver el" movimiento "del mundo, ¡y la eficiencia es peor!
Dirección de descarga de AjaxPro.dll <configuración>
<sistema.web>
<controladoreshttp>
<agregar verbo="POST,GET" ruta="ajax/*.ashx" tipo="Ajax.PageHandlerFactory, Ajax" />
<agregar verbo="POST,GET" ruta="ajaxpro/*.ashx" tipo="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
</sistema.web>
</configuration>
AjaxTest.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transicional//ES" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="servidor">
<title>Página sin título</title>
</head>
<body>
<script idioma="javascript" tipo="texto/javascript">
área de funciónResultado()
{
var area=document.getElementById("DropDownList1");
//alerta(area.valor);
AjaxTest.GetCityList(area.value,get_city_Result_CallBack);
}
función get_city_Result_CallBack(respuesta)
{
si (respuesta.valor! = nulo)
{
document.all("DropDownList2").length=0;
var ds = respuesta.valor;
if(ds!= null && typeof(ds) == "objeto" && ds.Tables!= null)
{
for(var i=0; i<ds.Tables[0].Rows.length; i++)
{
var nombre=ds.Tables[0].Filas[i].nombre;
var id=ds.Tables[0].Rows[i].id;
document.all("DropDownList2").options.add(nueva opción(nombre,id));
}
//document.all("TextBox1").value="";
}
}
devolver
}
</script>
<formulario id="form1" runat="servidor">
<asp:DropDownList ID="DropDownList1" runat="servidor">
</asp:ListaDesplegable>
<asp:DropDownList ID="DropDownList2" runat="servidor">
</asp:DropDownList>
<br />
</formulario>
</cuerpo>
</html>
AjaxTest.cs
usando System;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
utilizando System.Web.Security;
utilizando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
utilizando MeetWeb;
clase parcial pública AjaxTest: System.Web.UI.Page
{
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(tipode(AjaxTest));
si (!Página.IsPostBack)
{
Vincular datos()
;
}
BindData vacío privado()
{
Conjunto de datos ds = nuevo Conjunto de datos();
String sql = "Seleccionar ID, nombre de la prueba";
intentar
{
ds = GetDataSet(sql, "prueba");
this.DropDownList1.DataSource = ds.Tables[0];
this.DropDownList1.DataTextField = "nombre";
this.DropDownList1.DataValueField = "identificación";
this.DropDownList1.DataBind();
this.DropDownList1.Attributes.Add("onclick", "areaResult();");
}
captura (Excepción ex)
{
Respuesta.Escribir(ex.Mensaje);
}
}
conjunto de datos estático público GetDataSet (cadena sql, cadena aa)
{
MeetWeb.SqlDataBase a = new MeetWeb.SqlDataBase("server=localhost\PMSERVER;uid=sa;pwd=sa;database=test");
Conjunto de datos ds = nuevo Conjunto de datos();
ds=a.CreateSet(sql, aa);
devolver ds;
}
[AjaxPro.AjaxMétodo]
Conjunto de datos público GetCityList (int id)
{
string sql = "seleccione el nombre de la prueba donde id='" + id + "'";
devolver GetDataSet(sql,"prueba");
}
}