html页面的两个下拉类别框是联动的,第一个下拉框是后台绑定的,第二个下拉框是用ajax来无刷新动态绑定的,在做查询页面时,选择第一个下拉框之后,第二个下拉框也发生变化,点击搜索之后,第二个下拉类别框没有数据了,
<asp:DropDownList ID="dropTownship" runat="server"></asp:DropDownList>
<asp:DropDownList ID="dropVillage" runat="server" Width="230px">
<asp:ListItem Value="">---请选择---</asp:ListItem>
</asp:DropDownList>
查询代码如下
protected void btnSearch_Click(object sender, EventArgs e)
{
string strdropTownship = dropTownship.SelectedValue.Trim();
string strName = txtName.Text.Trim();
string strdropVillage = dropVillage.SelectedValue.Trim();
string strWhere = "township=" + Common.UrlEncode(strdropTownship) +
"&name=" + Common.UrlEncode(strName) +
"&village=" + Common.UrlEncode(strdropVillage) ;
Response.Redirect("VillageInforEnrollList.aspx?" + strWhere);
}
上面的代码中dropVillage.SelectedValue.Trim();读取到永远为空,这是为什么呢,因为它的数据不是后台绑定,而是前台通过ajax来实现的,这时要通过Request.Form["dropVillage"].ToString();方式来获取dropVillage下拉列表框的值
Response.Redirect("VillageInforEnrollList.aspx?" + strWhere);这句会重新加载VillageInforEnrollList,执行PageLoad事件
这时参数里含township和village这个两个参数然后通过这两个参数来后台绑定dropVillage,这样查询时dropVillage可以保留原先搜索的值而不是置空。代码如下
if (Request.QueryString["township"] != null && Request.QueryString["township"].ToString().Length > 0)
{
DataTable dtVillage = new SysAreaMg().GetList(" flag='5' and PCode='" + Common.GetEncodeQueryString("township") + "' ").Tables[0];
Common.DataBind("AreaName", "AreaCode", dtVillage, dropVillage);//绑定dropVillage
if (Request.QueryString["village"] != null && Request.QueryString["village"].ToString().Length > 0)
{
//绑定dropVillage下拉框默认值
dropVillage.Items.FindByValue(Common.GetEncodeQueryString("village")).Selected = true;
}
else
{
}
}
这里来通过前后台来确定dropVillage下拉框的值