欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.net 控件实现数据级联

程序员文章站 2022-10-25 12:12:05
今天我们来一起用asp.net实现一个级联,这个小不点应该是会经常用到的的。 咱们简单的画两个窗体。文本框会根据下拉框所选的内容显示不同的内容。 具体实现效果如下 步骤...

今天我们来一起用asp.net实现一个级联,这个小不点应该是会经常用到的的。


咱们简单的画两个窗体。文本框会根据下拉框所选的内容显示不同的内容。

具体实现效果如下

ASP.net 控件实现数据级联ASP.net 控件实现数据级联


步骤一:

准备工作,建立相应的。

显示效果如下


ASP.net 控件实现数据级联

ASP.net 控件实现数据级联

附脚本如下

create database department

use department

create table tdepartment
(
 depid int primary key,
 depname varchar(30) not null
)

insert into tdepartment values(1,'教务')
insert into tdepartment values(2,'高校')
insert into tdepartment values(3,'办公室')

create table emp
(

	empid int primary  key,
	empname varchar(30) not null,
	depid int foreign key references tdepartment(depid)
	
)
insert into emp values(1,'小马',1)
insert into emp values(2,'小丹',1)
insert into emp values(3,'小妹',1)
insert into emp values(4,'马丹妹',3)



步骤二:

新建项目为 asp.ne web 窗体应用程序。在窗体中画 图中的两个控件。dropdownlist 和listbox,分别命名为 ddldep 和lboxemp。同时将dropdownlist中autopostback属性设置为true(目的是让每次重选列表能有响应)。
我们需要在formload 和ddldep_selectedindexchanged 时间中编写相应的代码。其中ddldep_selectedindexchanged是选中空间ddldep在右侧属性-事件中双击时间selectedindexchanged

using system;
using system.collections.generic;
using system.web;
using system.web.ui;
using system.web.ui.webcontrols;
using system.data.sqlclient;//数据库

namespace department
{
    public partial class webform1 : system.web.ui.page
    {
        protected system.web.ui.webcontrols.listbox lboxemp;
        protected system.web.ui.webcontrols.dropdownlist ddldep;
        protected void page_load(object sender, eventargs e)
        {
            if (!this.ispostback)
            {

                sqlconnection con = dbcon.createconnection();
                con.open();
                //显示部门
                sqlcommand cmd = new sqlcommand("select * from  tdepartment", con);
                sqldatareader sdr = cmd.executereader();
                this.ddldep.datasource = sdr;
                this.ddldep.datatextfield = "depname";
                this.ddldep.datavaluefield = "depid";
                this.ddldep.databind();
                sdr.close();
                //显示员工
                sqlcommand cmdemp = new sqlcommand("select * from emp where  depid=" + this.ddldep.selectedvalue, con);
                sqldatareader sdremp = cmdemp.executereader(); ;
                while (sdremp.read())
                {
                    this.lboxemp.items.add(new listitem(sdremp.getstring(1), sdremp.getint32(0).tostring()));

                }
                sdremp.close();
                //此处防止用户代码以初始化页面

                //关闭连接
                con.close();

            }
        }

        protected void ddldep_selectedindexchanged(object sender, eventargs e)
        {
            this.lboxemp.items.clear();

            sqlconnection con = dbcon.createconnection();
            con.open();           //显示员工
            sqlcommand cmdemp = new sqlcommand("select * from emp where  depid=" + this.ddldep.selectedvalue, con);
            sqldatareader sdremp = cmdemp.executereader(); ;
            while (sdremp.read())
            {
                this.lboxemp.items.add(new listitem(sdremp.getstring(1), sdremp.getint32(0).tostring()));

            }
            sdremp.close();
            //此处防止用户代码以初始化页面

            //关闭连接
            con.close();

        }

    }
}

以上是主要内容,下面把获取数据库的语句写在下面。这样便是一个完整的小功能。

using system;
using system.data.sqlclient;
namespace department
{
    public class dbcon
    {
        public dbcon(){ }
        public static sqlconnection createconnection()
        {
            sqlconnection con = new sqlconnection("server=.;database=department;uid=sa;pwd=123456;");
            return con;
            
        }
    }
}


总结:

我们不断的在学习每一个控件的使用,一方面让我们能更加灵活的运用其方法和特性,另一方面也让我们更加熟悉每一种语言。虽然都是一小步一小步的去走,每每成功一个也还是感到喜悦。