我在一个页面里放了一个DropDownList控件可以获得选中的值,在另一个页面放了一个类似的控件(功能一样的就数据不同)就怎么也获得不了选中的值,调试的时候里面是空的!问题出在哪里啊!帮我看看!我把代码贴出来( Page_Load()里的代码):
                       string strSQL;
       if(!IsPostBack)
{
con.open();
strSQL = "select ID,EmployeeName from Comm_Employees where EmployeeName not in (select EmployeeName from Comm_Employees,MIS_Users where EmployeeName=urealname)";
if(Request["recid"]!=null )
{
m_bIsModify=true;
m_strRecID=commSafe.SafeInput(Request["recid"].ToString(),-1);
}
if(m_bIsModify)
{
strSQL = "select ID,EmployeeName from Comm_Employees where( EmployeeName not in (select EmployeeName from Comm_Employees,MIS_Users_VIEW where EmployeeName=urealname) or EmployeeName in (select urealname from MIS_Users_VIEW where ID='"+Request["recid"]+"'))";
}
if(strEmployeeType!="")
strSQL+=" and EmployeeType='"+commSafe.SafeInput(strEmployeeType,-1)+"'";
if(strDepartmentType!="")
strSQL+=" and DepartmentName='"+commSafe.SafeInput(strDepartmentType,-1)+"'";
if(strEmployeeStatus!="")
strSQL+=" and StatusName='"+commSafe.SafeInput(strEmployeeStatus,-1)+"'";
strSQL+=" order by EmployeeName";
SqlDataAdapter adp = new SqlDataAdapter(strSQL,con.myConnection);
DataSet ds=new DataSet();
adp.Fill(ds);
DataView dvTree = new DataView(ds.Tables[0]);
//放入列表
EmployeeID.Items.Clear();
ListItem emptyItem=new ListItem();
emptyItem.Text="";
emptyItem.Value="";
EmployeeID.Items.Add(emptyItem);
foreach(DataRowView Row in dvTree) 
{
ListItem newItem=new ListItem();
newItem.Text=Row["EmployeeName"].ToString();
newItem.Value=Row["ID"].ToString();
EmployeeID.Items.Add(newItem);
}
con.Close();
}
if(EmployeeID.SelectedValue!="")<-----这里取不到值,为空
{
urealname.Value=EmployeeID.SelectedItem.Text;
}
DateTime dtCurTime = DateTime.Now;
LastLoginTime.Value=dtCurTime.ToString();
utype.Value=strUtype;
另外一个页面和这个是一样的,就是strSQL查询不一样,就可以取到值,我把两个控件的属性都设成一样的,就ID不同

解决方案 »

  1.   

    看看你的查询语句在sqlserver查询分析器中看看能查到数据吗?
      

  2.   

    还没有选中项,你在前面加个EmployeeID.SelectedIndex=0;使选中第一项。因为你是手动创建的ListItem,如果使用DataBind的话,DropDownList会默认选中第一项。
    你这种情况可以直接用数据绑定
    把EmployeeID的DataTextField设为EmployeeName,DataValueField设为ID,然后EmployeeID.DataSource = dvTree;EmployeeID.DataBind();这样就不会出现你遇到的问题,因为它默认选中了第一项
      

  3.   

    问题还是没有解决!
    把EmployeeID的DataTextField设为EmployeeName,DataValueField设为ID,然后EmployeeID.DataSource = dvTree;EmployeeID.DataBind();
    报错了
    说dvTree不在命名空间里!
    我是初学者,还望各位多指教!
      

  4.   

    你直接把
    EmployeeID.DataSource = ds;
    EmployeeID.DataValueField = "ID";
    EmployeeID.DataTextField = "Name";
    EmployeeID.DataBind();
    EmployeeID.SelectedIndex = 0;
    不就好拉
    为什么还要用个dataview呢?
    最多在绑定前判断一下,ds.Table.Count != 0 && ds.Tables[0].Rows.Count != 0
      

  5.   

    我想实现选中哪一项就获得哪一项的内容(text),你们那样做实现不了啊!
    是可以获得值,但他们和数据库里是不对应的.
      

  6.   

    你自己从数据库里查出来然后绑定上去的
    怎么会和数据库里不对应呢?
    urealname.Value=EmployeeID.SelectedItem.Text;
    这个选到的是绑定上去的Name,要取到ID就用
    urealname.Value=EmployeeID.SelectedItem.Value;