// .aspx.cs代码:
protected void ddldistrict_SelectedIndexChanged(object sender, EventArgs e)
{
try {
ddltaluka.Enabled = true;
string d1 = ddldistrict.Text;
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;Port=5432;User Id=postgres;Password=*******;Database=guj_data;");
conn.Open();
string sql = "SELECT tname FROM taluka_geo_bnd_box WHERE district='"+d1+"'";
NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
ds.Reset();
da.Fill(ds);
dt = ds.Tables[0];
ddltaluka.DataSource = ds;
ddltaluka.DataTextField = "tname";
ddltaluka.DataBind();
conn.Close();
}
catch(Exception e3)
{
throw e3;
}
}
protected void ddltaluka_SelectedIndexChanged(object sender, EventArgs e)
{
try {
ddlvillage.Enabled = true;
string t1 = ddltaluka.Text;
string d1 = ddldistrict.Text;
NpgsqlConnection conn = new NpgsqlConnection("Server=localhost;Port=5432;User Id=postgres;Password=*****;Database=guj_data;");
conn.Open();
string sql = "SELECT vname FROM village_boundary_geo_bnd_box WHERE tname='"+t1+"' AND district='"+d1+"'";
NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
ds.Reset();
da.Fill(ds);
dt = ds.Tables[0];
ddlvillage.DataSource = ds;
ddlvillage.DataTextField = "vname";
ddlvillage.DataBind();
conn.Close();
}
catch(Exception e4)
{
throw e4;
}
}
答案 0 :(得分:2)
如果我理解正确的话; ddlvillage数据绑定发生在页面加载时 当调用方法ddltaluka_selectedIndexChanged时,你尝试绑定新数据吗,但它会回到原来的ddlVillage列表吗?
如果是这种情况,您只需要在初始页面加载时为ddlVillage执行初始数据绑定,而不是每个回发
if (!IsPostBack)
{
//bind your initial data here
}
答案 1 :(得分:-1)
当您有三个下拉列表时,一个取决于前一个值,您必须记住,当用户从第一个列表中选择一个值并更新第二个列表时,这不会触发第二个列表的选定值已更改。如果直接调用second_list的selected_valuechanged事件处理程序,在更新它的数据绑定之后,您还必须记住所选的值尚未更新。其他事件必须发生在两者之间。因此,对于三个列表,您必须将数据绑定移动到单独的函数,如下所示,并按如下方式调用它们:
BindListA()
... read the data for A and bind to dropdown A
... call BindListB(list A *default* value (first value?))
BindListB(A value)
... using the A value passed to this function
... read the data for B and bind this to dropdown B
... call BindListC(list B *default* value (first value?))
BindListC(B value)
... using the B value passed to this function
... read the data for C and bind to dropdown C
On page_load event
if it is not a postback
call BindListA()
On ListA_selectedIndexChanged event
call BindListB(ListA selected Value)
On ListB_selectedIndexChanged event
call BindListC(ListB selected value)
On ListC_selectedIndexChanged event
do whatever it is you want to do with the user's selection off list C
如果这可以解决您的问题,请提出建议。将来,没有人能够容忍缺乏描述,也不会试图像这样帮助你。如果您需要帮助,您需要显示相关代码,并至少给出问题的中途描述。