asp.net中的动态下载列表

本文关键字:下载 列表 动态 net asp | 更新日期: 2023-09-27 17:59:07

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

我的意思是,我将值autopostback设置为true,并创建indexchange事件,因为我需要选择值,但ListBxNbrPG。已选择项目。值它总是返回数字1,这是下拉列表中的第一个项目,无论我选择了什么数字,但它总是返回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*/
    }

asp.net中的动态下载列表

每次从下拉列表中选择一个项目时,都会将其发布回服务器并重新加载列表。在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
     }
}

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

if(!IsPostBack)

dropdownlist.databind();

}