自建List<>绑定ComboBox下拉框实现省市联动

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace _04省市联动
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            //所有的省份显示到第一个下拉框中
            LoadAreaByAreaPid(0);//参数是列名AreaId的值

        }

        private void LoadAreaByAreaPid(int p)//参数p是列名AreaId的值
        {

            List<Area> list = new List<Area>();
            list.Add(new Area() { AreaId = -1, AreaName = "请选择" });
            string sql = "select AreaId,AreaName from TblArea where AreaPId=" + p;//参数p是列名AreaId的值
            using (SqlDataReader reader = SqlHelper.ExecuteReader(sql))
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        Area a = new Area();
                        a.AreaId = Convert.ToInt32(reader["AreaId"]);
                        a.AreaName = reader["AreaName"].ToString();
                        list.Add(a);
                    }
                }
            }

            cmbSheng.DataSource = list;//绑定数据源
            cmbSheng.DisplayMember = "AreaName";//主要是设置下拉框显示的值
            cmbSheng.ValueMember = "AreaId";//实际值

        }

        private void cmbSheng_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbSheng.SelectedIndex!=0)
            {

                cmbCheng.Items.Clear();//清空
                //获取当前选中的省份的id

                int id = Convert.ToInt32(cmbSheng.SelectedValue);
                string sql = "select AreaId,AreaName from TblArea where AreaPId=" + id;
                using (SqlDataReader reader = SqlHelper.ExecuteReader(sql))
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())//练习
                        {
                            Area a = new Area();
                            a.AreaId = Convert.ToInt32(reader["AreaId"]);
                            a.AreaName = reader["AreaName"].ToString();
                            cmbCheng.Items.Add(a);//自带集合,要重写ToString()方法

                        }
                    }
                }
            }

        }
    }
}
时间: 2024-10-29 19:07:12

自建List<>绑定ComboBox下拉框实现省市联动的相关文章

Combobox下拉框两级联动

下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科目两张表,每门科目都对应一个年级,所以我们可以用两个下拉框(Combobox)来存储年级和科目信息来供用户选择.界面如下: 这时如果我们将科目对应的下拉框直接绑定科目表时,用户选择一个年级后还要从所有科目中进行选择就会降低系统的友好性,甚至可能出现没有任何意义的查询语句.我们可以先绑定年级下拉框的数

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

GridView 中绑定DropDownList ,下拉框默认选中Label的值

在GridView中,我们 有时候要绑定值. 前台绑定的代码可以这样 <asp:TemplateField HeaderText="当前状态" ItemStyle-HorizontalAlign="Center"> <EditItemTemplate> <asp:DropDownList ID="dStatus" DataSource='<%#BindStatus()%>' DataTextField=&

Devexpress GridControl 设置combobox下拉框

GridControl 设置combobox下拉框 //设置combobox下拉框        private void GetComboBox(string str)        {            RepositoryItemComboBox combobox = new RepositoryItemComboBox();            combobox.Items.Add(str);            combobox.AllowNullInput = DevExpr

extjs4 分页工具栏pagingtoolbar的每页显示数据combobox下拉框

var itemsPerPage = 20; var combo; //创建数据源store Ext.define('recordStore', { extend : 'Ext.data.Store', // autoLoad : { // start : 0, // limit : itemsPerPage // }, start : 0, limit : itemsPerPage, pageSize : itemsPerPage, model : 'recordModel', proxy :

sencha combobox下拉框不用jsonstore,直接使用字符串数组做数据源

combobox下拉框的store除了可以选择一个jsonstore来加载数据,还可以直接写成字符串Array的形式. { xtype: 'combobox', fieldLabel: 'Label', store: [ 'aa', 'bb', 'cc' ], listeners: { change: { fn: me.onComboboxChange, scope: me } } } sencha architecture里设置如下(点击store前面的小图标弹出选择项,选择Array,然后直

easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库"字段,并且在下拉的时候,"全部数据库"一直排在最顶部. 初始化效果如下: 下拉之后的效果如下: 实现方式: easyui的combobox有一个loader属性,easyui的API对loader属性说明如下: easyui的combobox有一个onLoadSuccess事件,eas

自绘制HT For Web ComboBox下拉框组件

传统的HTML5的下拉框select只能实现简单的文字下拉列表,而HTforWeb通用组件中ComboBox不仅能够实现传统HTML5下拉框效果,而且可以在文本框和下拉列表中添加自定义的小图标,让整个组件看起来更直观,今天我就如何制定ComboBox自定义下拉框做一番探讨. 首先我们先来目睹下效果:   看起来跟普通的ComboBox好像也没什么特殊的,是的,按照规范的ComboBox设计,完全可以实现同样的效果,但是今天的主要任务并不是讨论有多少实现方案,今天的首要任务是介绍HT for We

Winform实现ComboBox下拉框与数据库的绑定

实现效果如下: 1.设计窗体 下拉框的名称cmbName 2.连接数据库 DBHelper类代码: class DBHelper { /// <summary> /// 创建静态连接字符串 /// </summary> private static string connString= "Data Source=.;Initial Catalog=Test;uid=sa;pwd=F123456789f"; public static SqlConnection