zoukankan      html  css  js  c++  java
  • 20150303--从SQL中获取数据的三级联动

    省市地区的三级联动,每变更一次所选地都需要提交,但是又不需要把整个页面提交,所以我们需要使用控件:UdataPanel。工具--AJAX扩展

    image

    还有ScriptManager,并要将其放在页面的最顶端。

    DropDownList则需要放在UpdatePanel中:

    image

    HTML源:

    <body>
        <form id="form1" runat="server">
        <div>
        
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        
        </div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:DropDownList ID="ddl_sheng" runat="server" AutoPostBack="true" DataTextField="Name" DataValueField="ParentId" OnSelectedIndexChanged="ddl_sheng_SelectedIndexChanged">
                    </asp:DropDownList>
                    <asp:DropDownList ID="ddl_shi" runat="server" AutoPostBack="true" DataTextField="Name" DataValueField="ParentId" OnSelectedIndexChanged="ddl_shi_SelectedIndexChanged">
                    </asp:DropDownList>
                    <asp:DropDownList ID="ddl_diqu" runat="server" DataTextField="Name" DataValueField="ParentId" OnSelectedIndexChanged="ddl_diqu_SelectedIndexChanged">
                    </asp:DropDownList>
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    </body>

    需要注意的是,在DropDownList的标签中,必须把AutoPostBack的属性设置为 true,自动回发数据。

    DataTextField="Name" DataValueField="ParentId"

    则是用来绑定显示的Text以及值Value。

    cs中的代码:

    DiquDataContext diqu=new DiquDataContext();//外部定义LINQ方便使用
    
        protected void Page_Load(object sender, EventArgs e)
        {
            //第一次加载时才会走这里,必须要有,否则每次改动选择值时加载都会显示第一次加载的数据
            if (!IsPostBack)
            {
                getsheng();
                getshi();
                getdiqu();
            }
        }
        /// <summary>
        /// 绑定省
        /// </summary>
        public void getsheng()//
        {
            var va = diqu.Members.Where(m => (m.ParentId.ToString().Length == 2));
            ddl_sheng.DataSource = va;
            ddl_sheng.DataTextField = "Name";
            ddl_sheng.DataValueField = "ParentId";
            ddl_sheng.DataBind();
        }
       /// <summary>
       /// 绑定市
       /// </summary>
        public void getshi()//
        {
            string ss = ddl_sheng.SelectedValue;//获取显示的省的值。
            var sh = diqu.Members.Where(m => (m.ParentId.ToString().Length == 4) && (m.ParentId.ToString().Substring(0, 2) == ss));
            ddl_shi.DataSource = sh;
            ddl_shi.DataTextField = "Name";
            ddl_shi.DataValueField = "ParentId";
            ddl_shi.DataBind();
        }
        /// <summary>
        /// 绑定地区
        /// </summary>
        public void getdiqu()
        {
            string ss = ddl_shi.SelectedValue;//获取显示的省的值。
            var sh = diqu.Members.Where(m => (m.ParentId.ToString().Length == 6) && (m.ParentId.ToString().Substring(0, 4) == ss));
            ddl_diqu.DataSource = sh;
            ddl_diqu.DataTextField = "Name";
            ddl_diqu.DataValueField = "ParentId";
            ddl_diqu.DataBind();
    
        }
        protected void ddl_shi_SelectedIndexChanged(object sender, EventArgs e)
        {
            getdiqu();
        }
        protected void ddl_sheng_SelectedIndexChanged(object sender, EventArgs e)
        {
            getshi();
            getdiqu();
        }
        protected void ddl_diqu_SelectedIndexChanged(object sender, EventArgs e)
        {
        }
  • 相关阅读:
    C++进阶--析构函数中的异常
    C++进阶--派生类的析构(虚析构函数,shared_ptr)
    linux_shell_拆分文件_多进程脚本
    java_eclipse_设置全局编码_utf-8_编译class指定_运行jar乱码解决_不依赖环境
    linux_环境变量设置 utf-8
    linux_awk_内部正则过滤
    java_Eclipse中SVN的安装步骤(两种)和使用方法
    linux_vim_快捷键
    php_公共方法01_传入数组_打印可见信息
    linux_sed 正则替换
  • 原文地址:https://www.cnblogs.com/Tirisfal/p/4310148.html
Copyright © 2011-2022 走看看