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
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();
}
/**////
/// Connexion à la base de données http://www.downcodes.com
///
///
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écupère les catégories de niveau inférieur
///
[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 ;
}
}
/**////
/// Renvoie un DataSet
///
///
///
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;
}
}
/**////
/// //Liaison de données
///
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" %>
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
http://www.w3.org/1999/xhtml " >