C# ASPX dropdownlist所选项目
我有这个代码来显示DB下拉列表中的项目C# ASPX dropdownlist所选项目,c#,asp.net,C#,Asp.net,我有这个代码来显示DB下拉列表中的项目 string query = "SELECT ID, Firstname, Lastname FROM Crew"; string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString; using (SqlConnection con = new SqlConnection(constr))
string query = "SELECT ID, Firstname, Lastname FROM Crew";
string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
ListItem item = new ListItem();
item.Text = sdr["Lastname"].ToString() + ' ' + sdr["Firstname"].ToString();
item.Value = sdr["ID"].ToString();
item.Selected = ""
ddlCrew.Items.Add(item);
}
}
con.Close();
}
}
ddlCrew.Items.Insert(0, new ListItem("--Select Crew--", "0"));
如何根据值选择项目
工作人员:
CrewID,Firstname,Lastname,IsActive
表报告:
船员报告ID
因此,我需要根据在表格报告的Crew列中输入的ID,从表格Crew中选择Firstname+Lastname
编辑:
正如Tony所建议的,我现在有以下代码:
string query = "SELECT RepCrewID, Firstname, Lastname FROM tblRepCrew; SELECT ServiceTicketReportID, InspectedBy FROM tblServiceTicketReport WHERE ServiceTicketID = 123";
string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
ListItem item = new ListItem();
item.Text = sdr["Lastname"].ToString() + ' ' + sdr["Firstname"].ToString();
item.Value = sdr["RepCrewID"].ToString();
if ( sdr["InspectedBy"].ToString() == sdr["RepCrewID"].ToString() )
{
item.Selected = true;
}
ddlCrew.Items.Add(item);
}
}
con.Close();
}
}
ddlCrew.Items.Insert(0, new ListItem("-- Select Crew --", "0"));
我唯一需要做的就是IF语句。据我所知,我必须检查列InspectedBy(表tblServiceTicketReport)中的ID是否与RepCrewID相同。如果相同,则选择它,如果不相同,则选择它或它的黑色,以便能够选择新的机组成员。大概是这样的:
if ( sdr["InspectedBy"].ToString() == sdr["RepCrewID"].ToString() )
{
item.Selected = true;
}
编辑2
到目前为止,我已经:
string query = "SELECT ServiceTicketReportID, InspectedBy FROM tblServiceTicketReport WHERE ServiceTicketID = 21336; SELECT RepCrewID, Firstname, Lastname FROM tblRepCrew";
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
something = sdr["InspectedBy"].ToString();
}
if (sdr.NextResult())
{
while (sdr.Read())
{
ListItem item = new ListItem();
item.Text = sdr["Lastname"].ToString() + ' ' + sdr["Firstname"].ToString();
item.Value = sdr["RepCrewID"].ToString();
if ( something == sdr["RepCrewID"].ToString())
{
item.Selected = true;
}
ddlCrew.Items.Add(item);
}
}
}
con.Close();
}
}
ddlCrew.Items.Insert(0, new ListItem("-- Select Crew --", "0"));
但我发现了这个错误:
>>> Error executing child request for ServiceTicketReportEdit.aspx.
>>> ServiceTicketReportEdit.aspx.cs(58): error CS0103: The name 'something' does not exist in the current context
表:
tblServiceTicketReport:ServiceTicketReportID、ServiceTicketID、InspectedBy
tblRepCrew:RepCrewID、Firstname、Lastname您可以检查while循环内的条件,并选择默认值
dropdownlist.ClearSelection(); //for clearing previous selection
dropdownlist.Items.FindByValue(value).Selected = true; //select item by value
string query = "SELECT ServiceTicketReportID, InspectedBy FROM tblServiceTicketReport WHERE ServiceTicketID = 123; SELECT RepCrewID, Firstname, Lastname FROM tblRepCrew";
string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString;
string something = null;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
something = sdr["InspectedBy"].ToString();
}
if (sdr.NextResult())
{
while (sdr.Read())
{
ListItem item = new ListItem();
item.Text = sdr["Lastname"].ToString() + ' ' + sdr["Firstname"].ToString();
item.Value = sdr["RepCrewID"].ToString();
if ( something == sdr["RepCrewID"].ToString())
{
item.Selected = true;
}
ddlCrew.Items.Add(item);
}
}
}
//using auto close the connection
//con.Close();
}
}
ddlCrew.Items
您可以检查while循环内的条件,并选择默认值
string query = "SELECT ServiceTicketReportID, InspectedBy FROM tblServiceTicketReport WHERE ServiceTicketID = 123; SELECT RepCrewID, Firstname, Lastname FROM tblRepCrew";
string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString;
string something = null;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
something = sdr["InspectedBy"].ToString();
}
if (sdr.NextResult())
{
while (sdr.Read())
{
ListItem item = new ListItem();
item.Text = sdr["Lastname"].ToString() + ' ' + sdr["Firstname"].ToString();
item.Value = sdr["RepCrewID"].ToString();
if ( something == sdr["RepCrewID"].ToString())
{
item.Selected = true;
}
ddlCrew.Items.Add(item);
}
}
}
//using auto close the connection
//con.Close();
}
}
ddlCrew.Items
看来这正是我需要的。但是如何检查(比较)表之间的值呢?if语句。我的意思是,如何检查Crew列下的table Report中有哪个值?ID是您在列中输入的值,如果(ID==sdr[“ID”]。ToString())是,但该ID位于不同的table,table Report中。我如何“到达”它?您需要连接两个表还是需要进行另一次选择以从表报告中获取ID?选择将更容易,对吗?我在同一个查询中选择了ReportID,Crew FROM Report。但我如何在If语句中使用它呢?有些人喜欢>如果(Crew.ToString()==sdr[“ID”].ToString())看起来就是我需要的。但是如何检查(比较)表之间的值呢?if语句。我的意思是,如何检查Crew列下的table Report中有哪个值?ID是您在列中输入的值,如果(ID==sdr[“ID”]。ToString())是,但该ID位于不同的table,table Report中。我如何“到达”它?您需要连接两个表还是需要进行另一次选择以从表报告中获取ID?选择将更容易,对吗?我在同一个查询中选择了ReportID,Crew FROM Report。但我如何在If语句中使用它呢?有些类似于>如果(Crew.ToString()==sdr[“ID”].ToString())听起来您的查询需要加入Crew和Report表?@sh1rts>基本上只需选择station即可。参见Tony Dong的答案。我只是不能用if语句从另一个表中得到正确的行。我们可以在您需要的时候讨论更多online@TonyDong嘿我已经更新了我的主题,请就IF声明向我提供建议。谢谢。假设您想使用用户名作为IF语句,请参阅新的代码更新。听起来您的查询需要加入Crew和Report表?@sh1rts>基本上只需选择station即可。参见Tony Dong的答案。我只是不能用if语句从另一个表中得到正确的行。我们可以在您需要的时候讨论更多online@TonyDong嘿我已经更新了我的主题,请就IF声明向我提供建议。谢谢。假设您想使用用户名作为IF语句,请参阅新的代码更新。