DropDownList 三级联动查询 简单用法

本文详细介绍了ASP.NET页面中使用DropDownList组件进行联动与数据绑定的优化方法,包括数据加载、筛选与更新机制。通过两种不同的数据绑定方式对比,阐述了效率差异与应用场景。同时,解释了如何在页面事件中清空并重新加载下拉列表项,以及如何通过SQL查询实现基于父级数据的子级数据动态加载。最后,通过实例展示了如何利用LINQ对数据库进行高效操作,如数据替换与提交变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要刷新页面的, 并非无刷新联动.

前台随便弄的:

<div>
省:
<asp:DropDownList ID="ddlSheng" runat="server" Width="100px" Height="21px" AutoPostBack="True"></asp:DropDownList>
</div>
<div>
市:
<asp:DropDownList ID="ddlShi" runat="server" Width="100px" Height="21px" AutoPostBack="True"></asp:DropDownList>
</div>
<div>
区:
<asp:DropDownList ID="ddlQu" runat="server" Width="100px" Height="21px" AutoPostBack="True"></asp:DropDownList>
</div>

后台也随便弄的:


 protected void Page_Load(object sender, EventArgs e)
        {            
            if (!IsPostBack)
            {
                this.ddlDataBind();
            }
        }

页面加载时首次绑定DropDownList


private void ddlDataBind() //初始数据绑定
 {
     //省
     //方法1
     List<String> ListAddItems;
     using (SCDataContext db = DBClass.CreateContext())
    {
        var ShengList = from p in db.China
                     where
                         (p.Sheng == "省")
                     select (p.Sheng);
        ListItems = ShengList.ToList();
    }
     this.ddlSheng.Items.Add("全部");
     for (int i = 0; i <= ListAddItems.Count; i++)
    {
       this.ddlSheng.Items.Add(ListAddItems[i]);
    }

    //方法2
    List<China> ListAddItems;
    using (SCDataContext db = DBClass.CreateContext())
    {
        var ShengList = from p in db.China
                     where
                         (p.Sheng == "省")
                     select (p);
        ListItems = ShengList.ToList();
    }
    this.ddlSheng.DataTextField = "Sheng";
    this.ddlSheng.DataValueField = "Pid";
    this.ddlSheng.DataSource = ListAddItems;
    this.ddlSheng.DataBind();
    this.ddlSheng.Items.Insert(0, new ListItem("全部"));

     //市
     this.ddlShi.Items.Add("全部");
     //区
     this.ddlQu.Items.Add("全部");
 }

楼上写出两种绑定数据的方法 方法1是 效率差  方法2效率好些


方法2中

DataTextField: 绑定显示的文本,是用户所能看到的

DataValueField :绑定值的文本,用户看不到,但是开发人员能读取,方便后续的操作。

Items.Insert: 插入一个新项,具体所在位置可自定义,0为首位。



 protected void ddlSheng_SelectedIndexChanged(object sender, EventArgs e)
 {
	//清除历史项
	this.ddlShi.Items.Clear();
        this.ddlShi.Items.Add("全部");
	List<China> ListAddItems;
	string pid = this.ddlSheng.SelectedValue.ToSting();
	using (SCDataContext db = DBClass.CreateContext())
       {
	 var ShiList = from p in db.China
                   where
                       (p.Type == "市" && SqlMethods.Like(p.Pid, pid+"%"))
                   select (p);
	 ListItems = ShiList.ToList();
       }
	 this.ddlShi.DataTextField = "Shi";
	 this.ddlShi.DataValueField = "Pid";
	 this.ddlShi.DataSource = ListAddItems;
	 this.ddlShi.DataBind();
	 this.ddlShi.Items.Insert(0, new ListItem("全部"));
 }

DropDownList 选择触发事件

this.ddlSheng.SelectedValue:读取之前DataValueField方法中保存好的值。

SqlMethods.Like:在LINQ中进行模糊查询。



LINQ修改数据库值:


	 var query = db.China.Where(p => p.Type == "区").Select(p => p);
	 China change = query.First();
	 change.Qu= chengge.Qu.Replace("区", "县");
	 db.SubmitChanges();


Replace:字符串替换.

SubmitChanges执行相应命令以实现对数据库的更改.