Javascript函数不适用于内容页面 [英] Javascript function does not work on a content page

查看:97
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆