我正在使用C#ASP.NET,並且我有一個提交頁面,當您單擊添加產品鏈接時,會打開一個彈出式「添加產品」頁面,該頁面上可以添加產品的下拉列表提交。業務規則規定每個產品在任何提交中只能有一個實例,所以我運行了兩個單獨的switch case語句,一個用於在彈出窗口中選中它們時從下拉列表中刪除項目,另一個用於查詢數據庫來確定是否有任何產品已與提交相關聯,如果是,則從下拉列表中刪除這些選項。一旦用戶從下拉菜單中選擇一個項目,該產品的面板就會顯示出來供用戶輸入。切換案例與dropdownlist可用性/面板可見性是否衝突?
這兩個開關櫃都起作用,因爲它們消除了不應該使用的物品,但是由於我把查詢到的開關櫃放入,選擇後面板不再可見。當我移除查詢的開關盒時,面板在選擇時確實變得可見,但已經與提交相關聯的產品仍可在下拉菜單中使用。
我知道這裏有衝突的地方,但我對這是什麼,因爲這是我第一次去編程。代碼如下。請自行忽略這些疑問;這是一個非主動的培訓項目,我的處理程序禁止參數化,因爲他希望我先學習基本知識。我瞭解注入漏洞。
public partial class AddProduct : System.Web.UI.Page
{
protected void BtnAddProduct_Click(object sender, EventArgs e)
{
switch (DdlProductList.SelectedValue)
{
case "1":
PanelEpl.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
case "2":
PanelProf.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
case "3":
PanelCrime.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
case "4":
PanelFid.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
case "5":
PanelNotProf.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
case "6":
PanelPriv.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
case "7":
PanelPub.Visible = true;
DdlProductList.Items.Remove(DdlProductList.SelectedItem);
break;
default:
break;
}
}
protected void Page_Load(object sender, EventArgs e)
{
string x = Request.QueryString["SubId"];
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
string displayQuery = "SELECT CustName, CustAdd, CustCity, CustState, CustZip FROM Customer WHERE SubId =" + x;
string broQuery = "SELECT EntityType FROM Broker WHERE SubId =" + x;
string ddlQuery = "SELECT ProductId FROM SubmissionProducts WHERE SubmissionId =" + x;
using (SqlConnection displayConn = new SqlConnection(connectionString))
{
displayConn.Open();
SqlCommand DlistCmd = new SqlCommand(ddlQuery, displayConn);
using (SqlDataReader Ddldr = DlistCmd.ExecuteReader())
{
while (Ddldr.Read())
{
switch (Ddldr.GetInt32(0))
{
case 1:
DdlProductList.Items.RemoveAt(1);
break;
case 2:
DdlProductList.Items.RemoveAt(2);
break;
case 3:
DdlProductList.Items.RemoveAt(3);
break;
case 4:
DdlProductList.Items.RemoveAt(4);
break;
case 5:
DdlProductList.Items.RemoveAt(5);
break;
case 6:
DdlProductList.Items.RemoveAt(6);
break;
case 7:
DdlProductList.Items.RemoveAt(7);
break;
default:
break;
}
}
}
嘿@gbn,只是出於好奇,當你編輯我的問題你會怎麼做? (真的,只是好奇心,我不是領土或任何東西:D) – 2011-05-17 06:30:02
我改變了標籤。你說「請自己忽略這些查詢」,所以我刪除了SQL Server相關的版本 – gbn 2011-05-17 06:58:52