我在一个页面里放了一个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不同
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不同
你这种情况可以直接用数据绑定
把EmployeeID的DataTextField设为EmployeeName,DataValueField设为ID,然后EmployeeID.DataSource = dvTree;EmployeeID.DataBind();这样就不会出现你遇到的问题,因为它默认选中了第一项
把EmployeeID的DataTextField设为EmployeeName,DataValueField设为ID,然后EmployeeID.DataSource = dvTree;EmployeeID.DataBind();
报错了
说dvTree不在命名空间里!
我是初学者,还望各位多指教!
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
是可以获得值,但他们和数据库里是不对应的.
怎么会和数据库里不对应呢?
urealname.Value=EmployeeID.SelectedItem.Text;
这个选到的是绑定上去的Name,要取到ID就用
urealname.Value=EmployeeID.SelectedItem.Value;