Je suis confus avec mon code et je ne sais pas comment implémenter ce que je veux. J'ai deux tables sql une qui a OfficeID et OfficeName correspondant et un autre qui contient l'utilisateur. J'ai une page qui permet à une personne d'éditer des informations sur la personne. Lorsque la page est chargée, elle doit sélectionner dans la liste déroulante le nom Office actuel d'une personne dont les informations sont en cours d'édition. Ainsi j'ai ceci:C# asp.net liste déroulante sélectionnez la valeur
Ceci est probablement extrêmement inefficace et déroutant pour mon niveau de connaissance de C# et de SQL, mais néanmoins je suis déterminé à apprendre comment le faire. Ce que j'ai actuellement est Avant la création de la liste déroulante je reçois l'identifiant des utilisateurs, puis sélectionne dans la base de données son ID de bureau correspondant, puis en créant la liste déroulante je vérifie que l'ID Office correspond à ceux de l'autre table. S'il a trouvé le résultat, il le définira comme la valeur sélectionnée pour la liste déroulante.
suis-je sur la bonne voie? J'ai besoin de comprendre comment comparer SESLoginID = loginID avant de convertir loginID avant main. De l'aide?
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();
}
Une autre version du code où il existe une procédure de retour OfficeName en utilisant un LoginID. travail doesnt soit donne une erreur: System.Data.SqlClient.SqlException: Échec de la conversion de la valeur nvarchar 'SELECT [OfficeName] DE sesuser.SESLogin INNER JOIN sesuser.Office ON sesuser.Office.OfficeID = sesuser. SESLogin.OfficeID O WH SESLoginID LIKE '287' 'vers le type de données 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();
}
Quoi de mal à 'myItem.Selected = true'? – V4Vendetta
l'a changé, mais j'ai supposé que mon code faisait la même chose :) Je peux le tester parce que je ne suis pas sûr comment trouver SELECT OfficeID FROM SESLogin OERE SESLoginID = loginID – Angie
Eh bien pas vraiment 'SelectedValue' est différent du texte sauf si vous liez la même chose à la fois le texte et la valeur – V4Vendetta