如下代码实现联动下拉框,当选择部门时,会显示该部门所有人员,现在会出现人员重复的现象,请问是怎么回事?例如选择“人事部门”,
会出现
“全部人员”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”人员重复的数量正好==部门数量
protected void DDLDep_SelectedIndexChanged(object sender, EventArgs e)
{
int depID = int.Parse(DDLDep.SelectedValue);
if (depID != 0)
{
CF.BLL.Users userBll = new CF.BLL.Users();
DDLUsers.DataSource = userBll.GetList(" Users.DepID= " + depID);
DDLUsers.DataBind();
DDLUsers.Items.Insert(0, new ListItem("全部人员", "0"));
}
}初始化时代码:CF.BLL.Department depBll = new CF.BLL.Department();
DataSet ds = depBll.GetAllList();
DDLDep.DataSource = ds.Tables[0].DefaultView;
DDLDep.DataBind();
DDLDep.Items.Insert(0, new ListItem("全部科室", "0")); CF.BLL.Users userBll = new CF.BLL.Users();
DataSet dsu = userBll.GetAllList();
DDLUsers.DataSource = dsu.Tables[0].DefaultView;
DDLUsers.DataBind();
DDLUsers.Items.Insert(0, new ListItem("全部人员", "0"));
其中:
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select [DepID],[DepName] ");
strSql.Append(" FROM Department ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return DbHelperSQL.Query(strSql.ToString());
}
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetAllList()
{
return dal.GetList("");
}
会出现
“全部人员”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小王”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”
“小李”人员重复的数量正好==部门数量
protected void DDLDep_SelectedIndexChanged(object sender, EventArgs e)
{
int depID = int.Parse(DDLDep.SelectedValue);
if (depID != 0)
{
CF.BLL.Users userBll = new CF.BLL.Users();
DDLUsers.DataSource = userBll.GetList(" Users.DepID= " + depID);
DDLUsers.DataBind();
DDLUsers.Items.Insert(0, new ListItem("全部人员", "0"));
}
}初始化时代码:CF.BLL.Department depBll = new CF.BLL.Department();
DataSet ds = depBll.GetAllList();
DDLDep.DataSource = ds.Tables[0].DefaultView;
DDLDep.DataBind();
DDLDep.Items.Insert(0, new ListItem("全部科室", "0")); CF.BLL.Users userBll = new CF.BLL.Users();
DataSet dsu = userBll.GetAllList();
DDLUsers.DataSource = dsu.Tables[0].DefaultView;
DDLUsers.DataBind();
DDLUsers.Items.Insert(0, new ListItem("全部人员", "0"));
其中:
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select [DepID],[DepName] ");
strSql.Append(" FROM Department ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return DbHelperSQL.Query(strSql.ToString());
}
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetAllList()
{
return dal.GetList("");
}
strSql.Append("select [DepID],[DepName] ");
strSql.Append(" FROM Department ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);楼主,你看看这拼起来是什么。。
select [DepID],[DepName] from Department where Users.DepID="ID";
Users. 这是什么?
就这一句啊可能是.net执行多了吧?
应该不是SQL的问题,distinct也不行
莫非你的
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select [DepID],[DepName] ");
strSql.Append(" FROM Department ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return DbHelperSQL.Query(strSql.ToString());
}
这个方法不在UserBll类里。。?
另外分析下读取数据,绑定数据循环!
调试下试试!
吗上就发现那有问题了!
进行SelectedIndexChanged事件是否多了?
那么直接在事件中的最前:lst.Items.Clear();试试
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select distinct [DepName],[DepID] ");
strSql.Append(" FROM Department ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return DbHelperSQL.Query(strSql.ToString());
}
应该sql问题,按楼上的distinct一下就可以了
from Users,Department where Users.UserID=Departement.UID类似这样的话写上不就ok了?
真菜,from Users,Department后的Department后加的
也没调试,就来问大家了,不好意思啊