J'ai récemment créé des programmes de sites Web et j'utilise souvent plusieurs options de menu déroulant. Après avoir lu l'introduction, j'ai commencé à utiliser le contrôle AjaxPro et je pense que l'effet est bon. J'ai déjà utilisé MagicAjax, mais je l'ai oublié après ne pas l'avoir utilisé pendant une longue période. Le plus gênant est que c'est plus gênant lorsque l'on travaille avec des répertoires virtuels Haha, il y en a beaucoup sur Internet, mais les novices ne le sont souvent pas. rappelé des points importants. Moi aussi, donc les experts, s'il vous plaît, ignorez-le. J'ai vu qu'AjaxPro est relativement facile à utiliser. Cette fois, j'ai utilisé la version 6.x, et la dernière en date est la version 7.x. Je pensais que la série 6.0 était plus pratique, alors je l'ai choisie.
Il y a des indices à des endroits importants, je pense que c'est facile à comprendre.
Ajoutez d'abord ce point de contact entre <system.web> et </system.web> dans web.config, comme suit :
<système.web>
<!--pour Ajaxnet-->
<gestionnaires http>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpGestionnaires>
<!--Autres paramètres-->
</system.web>
Ensuite, jetez AjaxPro.2.dll dans le dossier bin et référencez-le.
Il vaut mieux envoyer le code, c'est trop gênant. Le code ci-dessous provient de Default.aspx.cs.
utiliser le système ;
en utilisant System.Data ;
en utilisant System.Configuration ;
en utilisant System.Data.OleDb ;
en utilisant System.Web ;
en utilisant System.Web.UI ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.WebControls.WebParts ;
en utilisant System.Web.UI.HtmlControls ;
classe partielle publique _Default : System.Web.UI.Page
{
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); //Nécessaire
if(!IsPostBack)BindDc();
}
/**//// <résumé>
/// Connexion à la base de données http://www.downcodes.com
/// </summary>
/// <retours></retours>
public OleDbConnection myConn()
{
string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbpath"]);
OleDbConnection conn = new OleDbConnection(ConnStr);
essayer
{
conn.Open();
connexion de retour ;
}
attraper
{
lancer;
}
}
/**//// <résumé>
/// Récupère les catégories de niveau inférieur
/// </summary>
[AjaxPro.AjaxMethod]
public DataSet getNextClass (chaîne cid)
{
//Parce que nous ne voulons pas que la page connaisse le nom du champ, donc comme txt, id as vol. S'il s'agit de sql ser, vous pouvez utiliser =.
//Le nom de colonne obtenu par la page doit être le même que celui-ci et est sensible à la casse. C'est généralement un endroit facile à ignorer.
//Le classement secondaire n'a donc pas changé
string sql = @"select cname as txt,id as vol from webclass which parentid=" + cid;
essayer
{
retourner getDs(sql);
}
attraper
{
//lancer;
renvoie null ;
}
}
/**//// <résumé>
/// Renvoie un DataSet
/// </summary>
/// <param name="SQL"></param>
/// <retours></retours>
public DataSet getDs (chaîne SQL)
{
OleDbConnection conn = maConn();
DataSet Ds = nouveau DataSet();
OleDbDataAdapter Da = new OleDbDataAdapter(SQL, conn);
essayer
{
Da.Fill(Ds);
retourner Ds ;
}
attraper
{
renvoie null ;
//lancer;
}
}
/**//// <résumé>
/// //Liaison de données
/// </summary>
vide privé BindDc()
{
//le premier
string sql = @"select * from webclass which Parentid=0";
ddl1.DataSource = getDs(sql);
ddl1.DataTextField = "cname" ;
ddl1.DataValueField = "identifiant" ;
ddl1.DataBind();
if (ddl1.DataSource != null) ddl1.Attributes.Add("onchange", "showNext(this.options[selectedIndex].value,'ddl2');");
//Vous pouvez d'abord déterminer DropDownList.SelectedItem.Value
//Deuxième
sql = @"select * from webclass où parentid=" + ddl1.SelectedItem.Value;
ddl2.DataSource = getDs(sql);
ddl2.DataTextField = "cname" ;
ddl2.DataValueField = "identifiant" ;
ddl2.DataBind();
//Le troisième
if (ddl2.DataSource != null) ddl2.Attributes.Add("onchange", "showNext(this.options[selectedIndex].value,'ddl3');");
sql = @"select * from webclass où parentid=" + ddl2.SelectedItem.Value;
ddl3.DataSource = getDs(sql);
ddl3.DataTextField = "cname" ;
ddl3.DataValueField = "id";
ddl3.DataBind();
}
}
contenu par défaut.aspx :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml " >
<head runat="serveur">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>AjaxPro réalise une liaison à trois niveaux sans actualisation</title>
</tête>
<langage de script="javascript" type="text/javascript">
<!--
//Fonctions JS communes d'ACLOUD
fonction getBid(s){
retourner document.getElementById(s);
}
fonction getBmc(s){
retourner document.getElementByName(s);
}
//Afficher la liste des catégories
fonction showNext(sid,obj)
{
if(sid==null || sid=="" || sid.length<1)return;
var slt =getBid(obj);
var v = _Default.getNextClass(sid).value; // Le nom de la classe
//alerte(v);
//retour;
si (v != nul){
if(v != null && typeof(v) == "objet" && v.Tables != null)
{
slt.length = 0;
slt.options.add(new Option("Veuillez sélectionner",0));
//Ajout de "Veuillez sélectionner" principalement pour déclencher l'événement onchange
si(obj=="ddl2"){
getBid("ddl3").options.length=0;
getBid("ddl3").options.add(new Option("Veuillez sélectionner",0));
}
pour(var i=0; i<v.Tables[0].Rows.length; i++)
{
var txt = v.Tables[0].Rows[i].txt; //Cet endroit doit être sensible à la casse var vol = v.Tables[0].Rows[i].vol; la table de l'ensemble de données Les noms doivent être cohérents slt.options.add(new Option(txt,vol));
}
}
}
retour;
}
-->
</script>
<corps>
<form id="form1" runat="serveur">
<div>
<table width="500" border="0" align="center" cellpadding="0" cellpacing="0">
<tr>
<td width="99"> </td>
<td largeur="401">
Ville<asp:DropDownList ID="ddl1" runat="server">
</asp:DropDownList>
Région<asp:DropDownList ID="ddl2" runat="server">
</asp:DropDownList>
Jardin<asp:DropDownList ID="ddl3" runat="server">
</asp:DropDownList></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</div>
</form>
</corps>
</html>
Documents associés