动态添加DropDownList 的(通过ajax) 联动方式

来源:互联网 发布:java线程池的函数 编辑:程序博客网 时间:2024/04/28 04:44

page:

 <form id="form1" runat="server">

    <div>
        <asp:DropDownList ID="ddlType" onchange="JavaScript:selectChange(this.selectedIndex);" runat="server">
        </asp:DropDownList>
        <asp:DropDownList ID="ddlSubType" runat="server">
        </asp:DropDownList>
    </div>

    </form>


js

<script language="javascript" type="text/javascript">
        var typestring = "";
        var subtypestring = "";
        $(document).ready(function () {
            $.ajax({
                type: 'get',
                url: 'Handler/GetType.ashx',
                data: { Type: "all" },
                cache: false,
                complete: callback
            });
        });


        function callback(str) {
            var types = str.responseText;
             typestring = types.split("_")[0];
             subtypestring = types.split("_")[1];


            var typelen = typestring.split(";").length;
            var dropType = document.getElementById("<%=ddlType.ClientID%>");
            var types = "";


            for (i = 0; i < typelen; i++) {
                types = typestring.split(";")[i]


                dropType.options[i] = new Option(types.split("|")[1], types.split("|")[0]);
            }


            var selectIndex = $("#ddlType").val();
            selectChange(selectIndex);


        }
        function selectChange(keyvalue) {
            var subtypestr = Search(keyvalue);
            var typesublen = subtypestr.split(";").length;
            var dropSubType = document.getElementById("<%=ddlSubType.ClientID%>");
            for (i = 0; i < typesublen; i++) {
                var typessub = subtypestr.split(";")[i]
                dropSubType.options[i] = new Option(typessub.split("|")[2], typessub.split("|")[1]);
            }
        }


        function Search(key) {
            var returnstring = "";
            var leng = subtypestring.split(";").length
            for (var i = 0; i < leng; i++) {
                if (key == subtypestring.split(";")[i].split("|")[0]) {
                    returnstring += subtypestring.split(";")[i] + ";"
                }
            }
            return returnstring.substr(0, returnstring.length - 1);
        }
       
    
    </script>


GetType.ashx 数据库获取数据

 context.Response.ContentType = "text/plain";
            DataTable typeDT = new DataTable();
            string typeString = string.Empty;
            typeDT = SQLHelp.RunSQLReturnDT("select * from tb_Type");
            for (int i = 0; i < typeDT.Rows.Count; i++)
            {
                typeString += typeDT.Rows[i]["SeqNo"].ToString() + "|" + typeDT.Rows[i]["TypeName"].ToString()+";";
            }
            typeString = typeString.TrimEnd(';');
            DataTable subTypeDT = new DataTable();
            string subTypeString = string.Empty;
            subTypeDT = SQLHelp.RunSQLReturnDT("select * from tb_SubType");
            for (int i = 0; i < subTypeDT.Rows.Count; i++)
            {
                subTypeString += subTypeDT.Rows[i]["TypeSeq"].ToString() + "|" + subTypeDT.Rows[i]["SeqNo"].ToString() + "|" + subTypeDT.Rows[i]["SubTypeName"].ToString() + ";";
            }
            subTypeString = subTypeString.TrimEnd(';');
            context.Response.Write(typeString + "_" + subTypeString);


sql:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_SubType]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tb_SubType](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TypeSeq] [int] NULL,
[SubTypeName] [nvarchar](50) NULL,
[SeqNo] [int] NULL,
[Orders] [int] NULL,
[Visible] [bit] NOT NULL CONSTRAINT [DF_Visual_SubType_Visible]  DEFAULT ((0)),
 CONSTRAINT [PK_Visual_SubType] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb_Type]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[tb_Type](
[ID] [int] IDENTITY(1,1) NOT NULL,
[TypeName] [nvarchar](50) NULL,
[SeqNo] [int] NULL,
[Orders] [int] NULL,
[Visible] [bit] NOT NULL CONSTRAINT [DF_Visual_Type_Visible]  DEFAULT ((0)),
 CONSTRAINT [PK_Visual_Type] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END