【发布时间】:2017-01-05 23:53:59
【问题描述】:
我有这段代码可以在 DB 的下拉列表中显示项目。
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"));
如何根据价值选择项目?
桌员: 船员 ID、名字、姓氏、IsActive
表格报告: ReportID,船员
所以我需要根据在表 Report 中的 Crew 列中输入的 ID 从表 Crew 中选择 Firstname + Lastname。
已编辑:
正如托尼建议的那样,我现在有了这个代码:
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、名字、姓氏
【问题讨论】:
-
听起来您的查询需要加入 Crew 和 Report 表?
-
@sh1rts > 基本上只选择语句就可以了。查看 Tony Dong 的回答。我只是无法使用 if 语句从另一个表中获取正确的行。
-
您在线时我们可以讨论更多
-
@TonyDong,嘿。我已经更新了我的主题,请在 IF 声明上告诉我。谢谢。
-
假设你想用用户名作为IF语句,见新代码更新。