Функция Javascript не работает на странице содержимого
Привет,
Я пытаюсь заполнить выпадающий список, имея данные в группах, на странице контента. Я использую базу данных Northwind. Вот мой код:
SQL Server
CREATE PROCEDURE EmployeesSelect AS BEGIN SET NOCOUNT ON; SELECT EmployeeID,FirstName,TitleOfCourtesy FROM dbo.Employees END GO
HTML
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <asp:DropDownList ID="ddlNames" runat="server"></asp:DropDownList> <script type="text/javascript"> $(function () { GroupDropdownlist('ddlNames') }); function GroupDropdownlist(id) { var selectControl = $('#' + id); var groups = []; $(selectControl).find('option').each(function () { groups.push($(this).attr('data-group')); }); var uniqueGroup = groups.filter(function (itm, i, a) { return i == a.indexOf(itm); }); $(uniqueGroup).each(function () { var Group = jQuery('<optgroup/>', { label: $(this)[0] }).appendTo(selectControl); var grpItems = $(selectControl).find('option[data-group="' + $(this)[0] + '"]'); $(grpItems).each(function () { var item = $(this); item.appendTo(Group); }); }); } </script> </asp:Content>
С#
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { ddlNames.Items.Clear(); ddlNames.Items.Add(new ListItem("", "0")); ddlNames.AppendDataBoundItems = true; string str = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString; SqlConnection conn = new SqlConnection(str); conn.Open(); SqlCommand sqlCmd = new SqlCommand("dbo.EmployeesSelect", conn); SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd); sqlCmd.CommandType = CommandType.StoredProcedure; DataTable dt = new DataTable(); sqlDa.Fill(dt); foreach (DataRow row in dt.Rows) { ListItem item = new ListItem(); item.Text = row["FirstName"].ToString(); item.Value = row["EmployeeID"].ToString(); item.Attributes["data-group"] = row["TitleOfCourtesy"].ToString(); ddlNames.Items.Add(item); } conn.Close(); } }
Несмотря на то, что код работает на одной странице, Я не могу получить данные в группах, когда использую их на главной странице/странице содержимого.
Мы будем признательны за любую помощь.
Что я уже пробовал:
1. создал файл .js и добавил функцию, импортировав файл .js на главную страницу.
F-ES Sitecore
Ваш код опирается на данные и файловые структуры, к которым мы не можем получить доступ, поэтому никто не может отладить это для вас, вам придется научиться отлаживать самостоятельно.
Если он работает на обычной странице, но не master\content, то вероятными проблемами являются идентификаторы элементов управления и пути к js-файлам. Ваш выпадающий список, кажется, содержит список идентификаторов элементов управления, но являются ли эти идентификаторы правильными? Существуют ли на странице элементы управления с этими идентификаторами? И я имею в виду в исходном html-коде, когда ваш js работает, а не в вашем файле aspx.
Ищите сообщения об ошибках в консоли браузера и используйте оператор "отладчик", чтобы пройти через ваш js строка за строкой и попытаться получить представление о том, что не работает, например, возвращает ли эта строка значение?
var selectControl = $('#' + id);
и так далее.