asp.net中的动态下拉列表

时间:2014-04-19 21:39:28

标签: c# asp.net

我有一个名为" product.aspx"的页面我列出了所有产品,但它显示了12个项目,所以我必须创建一个下拉列表,它有多少页面,问题是在这个下拉列表中它不能很好地工作!

我的意思是,我把值autopostback = true并且我创建indexchange事件因为我需要获取所选的值,但是ListBxNbrPG.SelectedItem.Value它总是重新调整数字1 wish是下拉列表中的第一个项目no重要的是我选择的号码,但总是返回1号

  protected void Page_Load(object sender, EventArgs e)
    {
         int nbr = (int)DB.ExecScal("select count(*) from produit");
        nbr = ((nbr % 12) == 0) ? (nbr / 12) : (int)(nbr / 12) + 1; // number of pages

        ListBxNbrPG.Items.Clear(); //initialisation of dropdownlist

        for (int i = 1; i <= nbr; i++)
        {
            ListBxNbrPG.Items.Add(i.ToString());
            ListBxNbrPG.Items[i - 1].Value = i.ToString();


        }


         if (Request.Params["pg"] != "" )
            {
              label.text=Request.Params["pg"].ToString(); //always it give number 1
            }


    }

    protected void ListBxNbrPG_SelectedIndexChanged(object sender, EventArgs e)
    {      
        Response.Redirect("product.aspx?pg="+ListBxNbrPG.SelectedItem.Value.ToString());

        /* ListBxNbrPG.SelectedItem.Value.ToString() it return always number 1*/
    }

2 个答案:

答案 0 :(得分:2)

每当您从下拉列表中选择一个项目时,您将回发到服务器并重新加载列表。在Page_Load中,您需要将代码包装在!Page.IsPostBack中。

if (!Page.IsPostBack ) {

    int nbr = (int)DB.ExecScal("select count(*) from produit");
    nbr = ((nbr % 12) == 0) ? (nbr / 12) : (int)(nbr / 12) + 1; // number of pages

    ListBxNbrPG.Items.Clear(); //initialisation of dropdownlist

    for (int i = 1; i <= nbr; i++)
    {
        ListBxNbrPG.Items.Add(i.ToString());
        ListBxNbrPG.Items[i - 1].Value = i.ToString();


    }


     if (Request.Params["pg"] != "" )
     {
        label.text=Request.Params["pg"].ToString(); //always it give number 1
     }

}

答案 1 :(得分:0)

在初始获取请求中填写下拉列表。然后,您可以通过在第一次请求时保留相同的数据来执行任意数量的回发。

如果(!的IsPostBack)

{

dropdownlist.databind();

}