二級级联的小問題

gundamtw 2008-11-29 12:42:27
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllDepartments"
TypeName="Bll_Departments"> </asp:ObjectDataSource>
</div>
<table>
<tr>
<td style="width: 92px; text-align: right">
部门: </td>
<td style="width: 126px; text-align: left">
<asp:DropDownList ID="AM_Department" runat="server" OnSelectedIndexChanged="AM_Department_SelectedIndexChanged"
Width="122px" DataSourceID="ObjectDataSource1" DataTextField="Name" DataValueField="Id">
<asp:ListItem>请选择部门 </asp:ListItem>
</asp:DropDownList> </td>
<td style="width: 62px; text-align: right">
姓名:
</td>
<td style="width: 155px; text-align: left">
<asp:DropDownList ID="AM_Name" runat="server" Width="142px">
</asp:DropDownList>
</td>
2个dropdownlist 第1个是部门的 第2个是该部门下的人姓名的 1是绑定的ObjectDataSource查询出所有部门 部门dropdownlist绑定显示的字段是部门的Name,他的值绑定的是部门的ID(数据库表里自增长的)

首先我想在页面初始化时,在1和2的第一条记录中插入“请选择部门”和“请选择姓名”
protected void Page_Load(object sender, EventArgs e)
{
AM_Department.Items.Add.......

}
然后下拉列表后面的内容都是datasource里查的添加上的

然后1的选择改变事件里,根据所选定的部门名把他的ID获取用来查询出该部门下的人员记录,然后返回所有记录把他添加到第二个dropdownlist中
protected void AM_Department_SelectedIndexChanged(object sender, EventArgs e)
{
string dname = AM_Department.SelectedValue;

List <Bll_Employees> employees = new List <Bll_Employees>();


}
...全文
198 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
gundamtw 2008-12-01
  • 打赏
  • 举报
回复
我的dropdownlist在页面初始化的时候 
protected void Page_Load(object sender, EventArgs e)
{
AM_Department.Items.Add("请选择部门");
AM_Department.Items[0].Value = "0";

AM_Name.Items.Add("请选择姓名");
AM_Name.Items[0].Value = "0";

}
给他加的是这个 后面的内容是在这个基础上追加上去的 如果DropDownList1的AutoPostBack必须为true的话那他每选择一次 dropdownlist的内容就会再添加一次页面初始化的数据

我的部门下拉列表现在好了 我想在选择其中一个部门后 第二个下拉列表中显示出该部门下所有员工姓名,第二个下拉列表值绑定员工编号
就是2级级联
protected void AM_Department_SelectedIndexChanged(object sender, EventArgs e)
{
string dname = AM_Department.SelectedValue;

ListItem employees = new ListItem();
employees=Bll_AttendanceM.GetAllEmployeeName(dname); ////我现在这个转换也出错了 Bll_AttendanceM.GetAllEmployeeName(dname);这个返回的是LIST <BLL_Employees> 转换List或Listitem出错 绑定到第二个dropdownlist 不知道怎么让第二个下拉列表显示字段是员工姓名 值字段为员工编号


AM_Name.DataSource = employees;
AM_Name.DataBind();



}
在部门下拉列表改变时 就把该部门的员工列表查了出来返回员工对象集合 但是怎么样才能 让第二个下拉列表显示字段是员工姓名 值字段为员工编号



请教高手

顶!!
spiritgenius 2008-12-01
  • 打赏
  • 举报
回复
友情帮顶~~~~~~~~~~
gundamtw 2008-12-01
  • 打赏
  • 举报
回复

贴沉的好快
麻烦高人帮忙按我要弄的这样给解决下!!!!!!!
gundamtw 2008-12-01
  • 打赏
  • 举报
回复
我的dropdownlist在页面初始化的时候 
protected void Page_Load(object sender, EventArgs e)
{
AM_Department.Items.Add("请选择部门");
AM_Department.Items[0].Value = "0";

AM_Name.Items.Add("请选择姓名");
AM_Name.Items[0].Value = "0";

}
给他加的是这个 后面的内容是在这个基础上追加上去的 如果DropDownList1的AutoPostBack必须为true的话那他每选择一次 dropdownlist的内容就会再添加一次页面初始化的数据

我的部门下拉列表现在好了 我想在选择其中一个部门后 第二个下拉列表中显示出该部门下所有员工姓名,第二个下拉列表值绑定员工编号
就是2级级联
protected void AM_Department_SelectedIndexChanged(object sender, EventArgs e)
{
string dname = AM_Department.SelectedValue;

ListItem employees = new ListItem();
employees=Bll_AttendanceM.GetAllEmployeeName(dname); ////1

AM_Name.DataSource = employees;
AM_Name.DataBind();



}
在部门下拉列表改变时 就把该部门的员工列表查了出来返回员工对象集合 但是怎么样才能 让第二个下拉列表显示字段是员工姓名 值字段为员工编号


这样叙述 明白了吗
gundamtw 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zhouchenguang 的回复:]
你时想按照你的方法给,写下去吧。你得说明白一点撒。其实你的方法一点也不好,你这个是服务端的写法,到时会很难看的。

C# code
List <Bll_Employees> employees = new List <Bll_Employees>();



这个时个泛型的List,你的业务层没有写明白,我们很难补充的。其实,简单一点:

C# code
string dname = AM_Department.SelectedValue;



你这里不是获取到了值了嘛,你吧这个值给传到你的BLL中的方法中去,…
[/Quote]
我这个就是按你说的这样做的 我查询返回的所有员工对象集合List <Bll_Employees> employees 但是不知道该怎么样让这些绑定到第二个dropdownlist上 让他显示的字段为name 绑定值为id 我只会这种方法
你说的那个Ajax+XML 没有用过 而且在XML里面写的话 就是写死了的吧 我是想从数据库里读的
zhouchenguang 2008-12-01
  • 打赏
  • 举报
回复
你时想按照你的方法给,写下去吧。你得说明白一点撒。其实你的方法一点也不好,你这个是服务端的写法,到时会很难看的。

List <Bll_Employees> employees = new List <Bll_Employees>();

这个时个泛型的List,你的业务层没有写明白,我们很难补充的。其实,简单一点:

string dname = AM_Department.SelectedValue;

你这里不是获取到了值了嘛,你吧这个值给传到你的BLL中的方法中去,BLL调用你的DAL中的方法,写一个Select语句。然后,返回结果,到页面到时接受然后帮顶一下不就行了。

当然我们都不推荐用这样的方法,现在比较常用的就是AjaxPro。如果你比较老乱,直接Ajax+XML一样可以搞定。
gundamtw 2008-12-01
  • 打赏
  • 举报
回复
郁闷~~
有没有高人帮忙解答下的啊
spiritgenius 2008-11-30
  • 打赏
  • 举报
回复
up
mengxj85 2008-11-30
  • 打赏
  • 举报
回复
Mark,以前多是用异步回调实现的
gundamtw 2008-11-30
  • 打赏
  • 举报
回复
有没有人帮忙解决一下。
gundamtw 2008-11-30
  • 打赏
  • 举报
回复
gundamtw 2008-11-29
  • 打赏
  • 举报
回复
我前面说的可能有些错 第一个dropdownlist就是部门的在请选择后追加上datasource里查出的 然后选择了部门dropdownlist其中一个后 把选中的ID赋给dname 然后在根据这个ID执行方法查出 该部门下的员工 并返回员工对象集合(List <Bll_Employees>)
然后把这个集合绑定到第二个dropdownlist 让他显示字段为员工姓名 显示值为员工编号
就这个方法里的添加不行 麻烦请教个位高手

protected void AM_Department_SelectedIndexChanged(object sender, EventArgs e)
{
string dname = AM_Department.SelectedValue;

ListItem employees = new ListItem();
employees=Bll_AttendanceM.GetAllEmployeeName(dname);

AM_Name.DataSource = employees;
AM_Name.DataBind();



}
千斤顶
gundamtw 2008-11-29
  • 打赏
  • 举报
回复
晕啊 贴沉的好快 有没有高手来帮忙解决一下啊 感激啊
suker2008 2008-11-29
  • 打赏
  • 举报
回复
友情帮顶~~~~~~~~~~
gundamtw 2008-11-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gundamtw 的回复:]
我前面说的可能有些错 第一个dropdownlist就是部门的在请选择后追加上datasource里查出的 然后选择了部门dropdownlist其中一个后 把选中的ID赋给dname 然后在根据这个ID执行方法查出 该部门下的员工 并返回员工对象集合(List <Bll_Employees>)
然后把这个集合绑定到第二个dropdownlist 让他显示字段为员工姓名 显示值为员工编号
就这个方法里的添加不行 麻烦请教个位高手
protected void AM_Department_SelectedIndex…
[/Quote]

有人能按照我要的这样 说一下吗谢谢
gundamtw 2008-11-29
  • 打赏
  • 举报
回复
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//获得部门编号
string id = this.DropDownList1.SelectedValue;
//根据部门便好取出人员名单
string sqlstr = "select empid,emp from employee";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("0", "请选择姓名");
SqlDataReader dr = SqlHelper.ExecuteReader(DataBase.ConStr, CommandType.Text, sqlstr, null);
while (dr.Read())
{
dic.Add(dr[0].ToString(), dr[1].ToString()); /////1
}
//人员下拉菜单的数据绑定
this.DropDownList2.DataSource = dic;
this.DropDownList2.DataTextField = "value";
this.DropDownList2.DataValueField = "key";
this.DropDownList2.DataBind();
}

你的这个少个where id的条件查询语句吧 还有注释1那里的dic在外面不是添加的第一个请选择吗 读取到数据后那里面重新添加了 那请选择姓名不就是没了吗
gundamtw 2008-11-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cl9876 的回复:]
C# code //部门的下拉菜单的绑定
//DropDownList1的AutoPostBack必须为true
public void BindData()
{
//取数据的sql语句id:部门编号,name:部门名称
string sqlstr = "select id,name from department";
Dictionary<string, string> dic
[/Quote]

你可能没看懂我说什么 我的部门下拉列表现在好了 我想在选择其中一个部门后 第二个下拉列表中显示出该部门下所有员工姓名,第二个下拉列表值绑定员工编号
就是2级级联
protected void AM_Department_SelectedIndexChanged(object sender, EventArgs e)
{
string dname = AM_Department.SelectedValue;

ListItem employees = new ListItem();
employees=Bll_AttendanceM.GetAllEmployeeName(dname);

AM_Name.DataSource = employees;
AM_Name.DataBind();



}
在部门下拉列表改变时 就把该部门的员工列表查了出来返回员工对象集合 让第二个下拉列表显示字段是员工姓名 值字段为员工编号

还有一点我的dropdownlist在页面初始化的时候
protected void Page_Load(object sender, EventArgs e)
{
AM_Department.Items.Add("请选择部门");
AM_Department.Items[0].Value = "0";

AM_Name.Items.Add("请选择姓名");
AM_Name.Items[0].Value = "0";

}
给他加的是这个 后面的内容是在这个基础上追加上去的 如果DropDownList1的AutoPostBack必须为true的话那他每选择一次 dropdownlist的内容就会再添加一次页面初始化的数据
cl9876 2008-11-29
  • 打赏
  • 举报
回复
   
//部门的下拉菜单的绑定
//DropDownList1的AutoPostBack必须为true
public void BindData()
{
//取数据的sql语句id:部门编号,name:部门名称
string sqlstr = "select id,name from department";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("0", "选择部门");
SqlDataReader dr = SqlHelper.ExecuteReader(DataBase.ConStr, CommandType.Text, sqlstr, null);
while (dr.Read())
{
dic.Add(dr[0].ToString(), dr[1].ToString);
}
this.DropDownList1.DataSource = dic;
this.DropDownList1.DataTextField = "value";
this.DropDownList1.DataValueField = "key";
this.DropDownList1.DataBind();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//获得部门编号
string id = this.DropDownList1.SelectedValue;
//根据部门便好取出人员名单
string sqlstr = "select empid,emp from employee";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("0", "请选择姓名");
SqlDataReader dr = SqlHelper.ExecuteReader(DataBase.ConStr, CommandType.Text, sqlstr, null);
while (dr.Read())
{
dic.Add(dr[0].ToString(), dr[1].ToString());
}
//人员下拉菜单的数据绑定
this.DropDownList2.DataSource = dic;
this.DropDownList2.DataTextField = "value";
this.DropDownList2.DataValueField = "key";
this.DropDownList2.DataBind();
}
cl9876 2008-11-29
  • 打赏
  • 举报
回复
    //部门的下拉菜单的绑定
//DropDownList1的AutoPostBack必须为true
public void BindData()
{
//取数据的sql语句id:部门编号,name:部门名称
string sqlstr = "select id,name from department";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("0", "选择部门");
SqlDataReader dr = SqlHelper.ExecuteReader(DataBase.ConStr, CommandType.Text, sqlstr, null);
while (dr.Read())
{
dic.Add(dr[0].ToString(), dr[1].ToString);
}
this.DropDownList1.DataSource = dic;
this.DropDownList1.DataTextField = "value";
this.DropDownList1.DataValueField = "key";
this.DropDownList1.DataBind();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//获得部门编号
string id = this.DropDownList1.SelectedValue;
//根据部门便好取出人员名单
string sqlstr = "select empid,emp from employee";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("0", "请选择姓名");
SqlDataReader dr = SqlHelper.ExecuteReader(DataBase.ConStr, CommandType.Text, sqlstr, null);
while (dr.Read())
{
dic.Add(dr[0].ToString(), dr[1].ToString());
}
//人员下拉菜单的数据绑定
this.DropDownList2.DataSource = dic;
this.DropDownList2.DataTextField = "value";
this.DropDownList2.DataValueField = "key";
this.DropDownList2.DataBind();
}
gundamtw 2008-11-29
  • 打赏
  • 举报
回复
我前面说的可能有些错 第一个dropdownlist就是部门的在请选择后追加上datasource里查出的 然后选择了部门dropdownlist其中一个后 把选中的ID赋给dname 然后在根据这个ID执行方法查出 该部门下的员工 并返回员工对象集合(List<Bll_Employees>)
然后把这个集合绑定到第二个dropdownlist 让他显示字段为员工姓名 显示值为员工编号
就这个方法里的添加不行 麻烦请教个位高手
protected void AM_Department_SelectedIndexChanged(object sender, EventArgs e)
{
string dname = AM_Department.SelectedValue;

ListItem employees = new ListItem();
employees=Bll_AttendanceM.GetAllEmployeeName(dname);

AM_Name.DataSource = employees;
AM_Name.DataBind();



}
加载更多回复(8)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧