Javascript函数不适用于内容页面 [英] Javascript function does not work on a content page
本文介绍了Javascript函数不适用于内容页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,
我正在尝试在内容页面中填写包含数据的下拉列表。我正在使用Northwind数据库。这是我的代码:
SQL Server
CREATE PROCEDURE EmployeesSelect
AS
< span class =code-keyword> BEGIN
SET NOCOUNT ON 跨度>;
SELECT EmployeeID,FirstName,TitleOfCourtesy
FROM dbo.Employees
END
GO
HTML
< asp:内容 ID = Content1 ContentPlaceHolderID = 主要内容 runat = server >
< asp:DropDownLis t ID = ddlNames runat = server > < / asp:DropDownList >
< script 类型 = 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 >
< < span class =code-leadattribute> / asp:Content >
C#
受保护 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();
}
}
即使代码在单个页面中工作,当我在master /中使用它时,我也无法将数据分组内容页面。
任何形式的帮助都将不胜感激。
我尝试过什么:
1.创建.js并添加函数,将.js文件导入母版页。
解决方案
( function (){
GroupDropdownlist(' < span class =code-string> ddlNames')
});
function GroupDropdownlist(id){
var selectControl =
(' #' + id);
var groups = [];
(selectControl).find(' 选项')。each( function (){
groups。推(
Hello,
I'm trying to fill a dropdownlist having the data in groups, in a content page. I'm using the Northwind Database. Here's my code:
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>
C#
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();
}
}
Even though the code works in a single page, I cannot get the data in groups when I use it in a master/content page.
Any kind of help would be appreciated.
What I have tried:
1. Created a .js and added the function, imported the .js file to the master page.
解决方案
(function () { GroupDropdownlist('ddlNames') }); function GroupDropdownlist(id) { var selectControl =
('#' + id); var groups = [];
(selectControl).find('option').each(function () { groups.push(
这篇关于Javascript函数不适用于内容页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文