Недавно я работал над некоторыми программами для веб-сайтов и часто использую несколько вариантов раскрывающегося меню. Прочитав введение, я начал использовать элемент управления AjaxPro и чувствую, что эффект хороший. Я раньше пользовался MagicAjax, но забыл о нем после того, как долго им не пользовался. Самое хлопотное, что с виртуальными каталогами сложнее, хаха, их много в интернете, но новичкам часто нет. Мне тоже напомнили о важных моментах, поэтому эксперты прошу игнорировать это. Я увидел, что AjaxPro относительно прост в использовании. На этот раз я использовал версию 6.x, а последняя версия — 7.x. Мне показалось, что серия 6.0 более удобна, поэтому я выбрал ее.
В важных местах есть подсказки, думаю, их легко понять.
Сначала добавьте эту точку контакта между
<система.веб>
система.веб>
Потом кидаем AjaxPro.2.dll в папку bin и ссылаемся на него.
Лучше прислать код, это слишком хлопотно. Код ниже из Default.aspx.cs.
использование системы;
использование System.Data;
использование System.Configuration;
используя System.Data.OleDb;
использование System.Web;
использование System.Web.UI;
использование System.Web.UI.WebControls;
использование System.Web.UI.WebControls.WebParts;
использование System.Web.UI.HtmlControls
общедоступного частичного класса _Default: System.Web.UI.Page;
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); //Необходимо
если(!IsPostBack)BindDc();
}
/**//// <сводка>
/// Подключение к базе данных http://www.downcodes.com
/// сводка>
/// <возвращается>возвращается>
общедоступное соединение OleDbConnection myConn()
{
строка ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Источник данных=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbpath"]);
OleDbConnection conn = новый OleDbConnection(ConnStr);
пытаться
{
конн.Открыть();
возврат соединения;
}
ловить
{
бросать;
}
}
/**//// <сводка>
/// Получаем категории нижнего уровня
/// сводка>
[AjaxPro.AjaxMethod]
общедоступный набор данных getNextClass (строка cid)
{
//Поскольку мы не хотим, чтобы страница знала имя поля, поэтому в качестве txt, id как vol. Если это sql ser, вы можете использовать =.
//Имя столбца, полученное страницей, должно быть таким же, как это, и учитывать регистр. Обычно это легко упустить из виду.
//Значит, вторичная классификация не изменилась
строка sql = @"выберите cname как txt,id как vol из веб-класса, где родительский ID=" + cid;
пытаться
{
вернуть getDs (sql);
}
ловить
{
//бросать;
вернуть ноль;
}
}
/**//// <сводка>
/// Возвращаем набор данных
/// сводка>
///
/// <возвращается>возвращается>
общедоступный набор данных getDs (строка SQL)
{
OleDbConnection conn = myConn();
DataSet Ds = новый DataSet();
OleDbDataAdapter Da = новый OleDbDataAdapter (SQL, conn);
пытаться
{
Да.Заполнить(Дс);
вернуть Ds;
}
ловить
{
вернуть ноль;
//бросать;
}
}
/**//// <сводка>
/// //Привязка данных
/// сводка>
частная пустота BindDc()
{
//первый
строка sql = @"выберите * из веб-класса, где Parentid=0";
ddl1.DataSource = getDs(sql);
ddl1.DataTextField = "cname";
ddl1.DataValueField = "id";
ddl1.Привязка Данных();
if (ddl1.DataSource != null) ddl1.Attributes.Add("onchange", "showNext(this.options[selectedIndex].value,'ddl2');");
//Сначала вы можете определить DropDownList.SelectedItem.Value
//Второй
sql = @"select * из веб-класса, где родительский идентификатор=" + ddl1.SelectedItem.Value;
ddl2.DataSource = getDs(sql);
ddl2.DataTextField = "cname";
ddl2.DataValueField = "id";
ddl2.Привязка Данных();
//Третий
if (ddl2.DataSource != null) ddl2.Attributes.Add("onchange", "showNext(this.options[selectedIndex].value,'ddl3');");
sql = @"select * из веб-класса, где родительский идентификатор=" + ddl2.SelectedItem.Value;
ddl3.DataSource = getDs(sql);
ddl3.DataTextField = "cname";
ddl3.DataValueField = "id";
ddl3.Привязка Данных();
}
}
Содержимое default.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 " >