我想请求您协助解决我遇到的问题。
我的问题是,下拉列表将显示2项SAMPLE(产品2)而不是Test和Sample,因为与orderID 1关联的产品是产品2.
但如果我将OrdersTable中的productID从2更改为1,则所有内容都将正确显示。那是为什么?
OrdersTable中
OrderID ProductID
1 2
ProductsTable
ProductID ProductName
1 Test
2 Sample
ASP.NET代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetOrders();
GetProducts();
}
}
private void GetOrders()
{
con.Open();
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandType = CommandType.Text;
string SQL =
"SELECT o.OrderID, o.ProductID, p.ProductName FROM Orders AS o, Products AS p WHERE o.ProductID = p.ProductID";
com.CommandText = SQL;
SqlDataReader data = com.ExecuteReader();
while (data.Read())
{
ddlProduct.SelectedItem.Text = data["ProductName"].ToString();
}
}
private void GetProducts()
{
con1.Open();
SqlCommand com = new SqlCommand();
com.Connection = con1;
com.CommandType = CommandType.Text;
com.CommandText =
"SELECT * FROM Products";
SqlDataReader data = com.ExecuteReader();
ddlProduct.DataSource = data;
ddlProduct.DataValueField = "ProductID";
ddlProduct.DataTextField = "ProductName";
ddlProduct.DataBind();
data.Close();
con1.Close();
}
答案 0 :(得分:0)
当Sample
表中的ProductID
设置为2时,您将两个项目都更改为Orders
的原因是因为初始SelectedItem
是第一项列表;用户尚未对页面做任何事情。因此,当执行以下逻辑时:
while (data.Read())
{
ddlProduct.SelectedItem.Text = data["ProductName"].ToString();
}
ddlProduct.SelectedItem
是下拉列表中的第一项,对数据库的查询返回Sample
作为要应用于所选项目的Text
属性的产品名称,并且不执行任何操作列表中第二个项目的文本值已为Sample
;因此,现在下拉列表中的两个项目都具有相同的Sample
文本值。
您的“问题”是下拉列表中的初始选定项目是列表中的第一项,即使用户在技术上根本没有选择项目。我不确定你在这之后甚至是什么行为;用户从下拉列表中选择一个项目,他们选择的项目的文本可能会发生变化吗?