c#asp.net下拉列表选择值
本文关键字:选择 下拉列表 net c#asp | 更新日期: 2023-09-27 18:00:08
我对我的代码感到困惑,不知道如何实现我想要的。我有两个sql表,一个表有OfficeID和匹配的OfficeName,另一个表包含user。我有一个页面,允许一个人编辑有关此人的信息。加载页面时,应该从下拉列表中选择其信息正在编辑的人员的当前OfficeName。因此我有了这个:
对于我的C#和SQL知识水平来说,这可能是非常低效和令人困惑的,但我决心学习如何做到这一点。我目前拥有的是在创建下拉列表之前,我得到用户Id,然后从数据库中选择他相应的officeID,然后在创建下拉列表时,我检查OfficeID是否与另一个表中的OfficeID相对应。如果找到匹配项,则会将其设置为下拉列表的选定值。
我走对了吗?在转换loginID之前,我需要弄清楚如何比较SESLoginID=loginID。有什么帮助吗?
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Functions;
using HelloApp;
public partial class UserUpdate : Page
{
private Int32 loginID = 0;
protected void Page_Load(object sender, EventArgs e)
{
loginID = Convert.ToInt32(Request.QueryString["SESLoginID"]);
if (!Page.IsPostBack)
{
BindBusinessUnitDDL();
}
}
protected void BindBusinessUnitDDL()
{
SqlConnection conn;
string sql;
SqlCommand cmd;
int error;
conn = Database.DBConnect(out error);
sql = String.Format("SELECT OfficeID FROM SESLogin WHERE SESLoginID = loginID");
cmd = new SqlCommand(sql, conn);
SqlDataReader rdrr = cmd.ExecuteReader();
ListItem office = new ListItem();
office.Value = Convert.ToString(rdrr.GetInt32(0));
Database.DBClose(conn);
sql = String.Format(
"SELECT OfficeID, OfficeName FROM Office");
cmd = new SqlCommand(sql, conn);
SqlDataReader rdr = cmd.ExecuteReader();
DropDownList ddlBusinessUnit = (DropDownList)(this.LoginFormView.FindControl("ddlBusinessUnit"));
while (rdr.Read())
{
ListItem myItem = new ListItem();
myItem.Value = Convert.ToString(rdr.GetInt32(0));
myItem.Text = rdr.GetString(1);
ddlBusinessUnit.Items.Add(myItem);
if(office.Value == myItem.Value){
ddlBusinessUnit.SelectedValue = myItem.Text;
}
}
Database.DBClose(conn);
ddlBusinessUnit.DataBind();
PageUser myUser = new PageUser();
}
存在使用登录ID返回OfficeName的过程的代码的另一个版本。Doesnt work要么给出错误:系统数据SqlClient。SqlException:转换nvarchar值"SELECT"时转换失败[办公室名称]FROM sesuser。SES登录INNER JOIN sesuser。办公室ON sesuser。办公室OfficeID=sesuser。SES登录。OfficeIDWHERE SESLoginID LIKE"287"到数据类型int.
public partial class UserUpdate : Page
{
private Int32 loginID = 0;
private String loginIDE = "";
protected void Page_Load(object sender, EventArgs e)
{
loginIDE = Request.QueryString["SESLoginID"];
loginID = Convert.ToInt32(Request.QueryString["SESLoginID"]);
if (!Page.IsPostBack)
{
BindBusinessUnitDDL();
}
}
protected void BindBusinessUnitDDL()
{
SqlConnection connec = null;
SqlCommand cmd = null;
string sqls = "";
int errNum = 0;
connec = Database.DBConnect(out errNum);
if (errNum != 0)
throw new Exception("Database Connection Error.");
sqls = "Login_GetOffice";
cmd = new SqlCommand(sqls, connec);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@userID", loginIDE);
string office = (string)cmd.ExecuteScalar();
SqlConnection conn;
string sql;
int error;
conn = Database.DBConnect(out error);
sql = String.Format(
"SELECT OfficeID, OfficeName FROM Office");
cmd = new SqlCommand(sql, conn);
SqlDataReader rdr = cmd.ExecuteReader();
DropDownList ddlBusinessUnit = (DropDownList)(this.LoginFormView.FindControl("ddlBusinessUnit"));
while (rdr.Read())
{
ListItem myItem = new ListItem();
myItem.Value = Convert.ToString(rdr.GetInt32(0));
myItem.Text = rdr.GetString(1);
ddlBusinessUnit.Items.Add(myItem);
if(office == myItem.Text){
myItem.Selected = true;
}
}
Database.DBClose(conn);
ddlBusinessUnit.DataBind();
PageUser myUser = new PageUser();
}
您可以分配一个DataSource并绑定从查询中获得的结果,比如通过DataTable。
设置DataTextField
和DataValueField
然后,在数据绑定到下拉列表后,您可以说出类似ddl.Items.FindByText("requiredloginid").Selected = true
的内容。
为什么要使用
ddlBusinessUnit.DataBind();?
您正在将任何数据源绑定到下拉列表。
你能指定你在哪一行出错吗?
谢谢Ashwani