我有一个名为" 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*/
}
答案 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();
}