ASP.NET中Datalist中的自动更新下拉列表项目



我在商店页面上工作,我希望下拉列表显示可用数量。(例如:如果库存包含2个项目,则下拉列表包含项目1,然后包含2个。)

这是我尝试的代码,我不知道我应该把它放在哪个情况下。

`
代码:

connect cu = new connect();
 System.Web.UI.WebControls.Label Label8 = (System.Web.UI.WebControls.Label)DataList1.FindControl("modelnoLabel");
//Modelnolabel contains model no

    cu.cmd.CommandText = "select qty from stock where modelno=@mod";
//qty is retrived based on modelnolabel text of datalist
    cu.cmd.Parameters.Clear();
    cu.cmd.Parameters.AddWithValue("@mod", Label8.Text);
    int qty = Convert.ToInt16(cu.cmd.ExecuteScalar());
    if (qty < 5 && qty > 0)
    {
        (DataList1.FindControl("DropDownList1") as DropDownList).Items.Clear();
        for (int i = 1; i < qty + 1; i++)
        {
            (DataList1.FindControl("DropDownList1") as DropDownList).Items.Add(Convert.ToString(i));
        }
    }
    else
    {
        (DataList1.FindControl("DropDownList1") as DropDownList).Visible = false;
    }`

预先感谢

谢谢你的沉默,它确实帮助我自己弄清楚:)

 protected void DataList1_Load(object sender, EventArgs e)
   {
for(int j=0;j<DataList1.Items.Count;j++)
       {
           System.Web.UI.WebControls.Label Label8 = (System.Web.UI.WebControls.Label)DataList1.Items[j].FindControl("modelnoLabel");
           connect cu = new connect();
           cu.cmd.CommandText = "select qty from stock where model=@mod";
           cu.cmd.Parameters.Clear();
           cu.cmd.Parameters.AddWithValue("@mod", Label8.Text);
           int qty = Convert.ToInt16(cu.cmd.ExecuteScalar());
           if (qty <= 5 && qty > 0)
           {
               (DataList1.Items[j].FindControl("DropDownList1") as DropDownList).Items.Clear();
               for (int i = 1; i < qty+1; i++)
               {
                   (DataList1.Items[j].FindControl("DropDownList1") as DropDownList).Items.Add(Convert.ToString(i));
                   (DataList1.Items[j].FindControl("qtylab") as System.Web.UI.WebControls.Label).Text = "Only "+qty+" Left";
                   (DataList1.Items[j].FindControl("qtylab") as System.Web.UI.WebControls.Label).ForeColor = Color.OrangeRed;
                   (DataList1.Items[j].FindControl("Button1") as System.Web.UI.WebControls.Button).Visible= true;
                   (DataList1.Items[j].FindControl("Button3") as System.Web.UI.WebControls.Button).Visible= true;
               }
           }
           else if (qty > 5)
           {
               (DataList1.Items[j].FindControl("DropDownList1") as DropDownList).Items.Clear();
               for (int i = 1; i < 6; i++)
               {
                   (DataList1.Items[j].FindControl("DropDownList1") as DropDownList).Items.Add(Convert.ToString(i));
                   (DataList1.Items[j].FindControl("qtylab") as System.Web.UI.WebControls.Label).ForeColor = Color.GreenYellow;
                   (DataList1.Items[j].FindControl("qtylab") as System.Web.UI.WebControls.Label).Text = "Available";
                   (DataList1.Items[j].FindControl("Button1") as System.Web.UI.WebControls.Button).Visible = true;
                   (DataList1.Items[j].FindControl("Button3") as System.Web.UI.WebControls.Button).Visible= true;
               }
           }
           else
           {
               (DataList1.Items[j].FindControl("DropDownList1") as DropDownList).Visible = false;
               (DataList1.Items[j].FindControl("qtylab") as System.Web.UI.WebControls.Label).Text = "Out of Stock";
               (DataList1.Items[j].FindControl("qtylab") as System.Web.UI.WebControls.Label).ForeColor = Color.Red;
               (DataList1.Items[j].FindControl("Button1") as System.Web.UI.WebControls.Button).Visible= false;
               (DataList1.Items[j].FindControl("Button3") as System.Web.UI.WebControls.Button).Visible = false;
               (DataList1.Items[j].FindControl("Label1") as System.Web.UI.WebControls.Label).Visible = false;
           } 
       }
}

最新更新