自动更新下拉列表项在Asp.net中的数据列表中

时间:2019-03-18 18:46:44

标签: asp.net

我正在“商店”页面上工作,我希望下拉列表显示可用的“数量”。 (例如:如果库存包含2个项目,则Dropdownlist包含项目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;

    }`

预先感谢

1 个答案:

答案 0 :(得分:0)

感谢您的沉默,它真的帮助我自己弄清楚了:)

 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;

           } 

       }
}