DROPDOWNLIST将更新面板后不更新 [英] Dropdownlist does not update after adding update panel
问题描述
我有多个的dropdownlist框所有查询同一列,同一个表,并从相同的数据库。例如下MEMBERID列我有以下的ID。
- 12345
- 23456
- 34567
和我有3个不同的DropDownList框,如下图所示。
< ASP:DropDownList的ID =memberID3=服务器可见=假OnSelectedIndexChanged =ddlpid3_SelectedIndexChanged>
< / ASP:DropDownList的>
< ASP:DropDownList的ID =memberID1=服务器可见=假OnSelectedIndexChanged =ddlpid1_SelectedIndexChanged>
< / ASP:DropDownList的>
< ASP:DropDownList的ID =memberID2=服务器可见=假OnSelectedIndexChanged =ddlpid2_SelectedIndexChanged>
< / ASP:DropDownList的>
我添加DropDownList中的更新面板,以便使我的DropDownList于任何更新/选择刷新。
< ASP:的UpdatePanel ID =UpdatePanel1=服务器>
<&的ContentTemplate GT;
< /&的ContentTemplate GT;
< / ASP:的UpdatePanel>
有关例如,当memberID1选择12345,其他2的dropdownlist(memberID2和3)将不显示该ID 12345反之亦然,当memberID1选择的dropdownlist的默认值,该ID重现中的其他2下拉框。我添加了一个默认值所有DDL的。
memeberID(数字).Items.Insert(0,新的ListItem(请选择一个会员ID,));
memeberID(数).SelectedIndex = 0;
如果我没有看错更新面板的财产,是不是能够使此功能工作的?
这里是绑定code的要求。
保护无效ddllocation_SelectedIndexChanged(对象发件人,EventArgs的发送)
{ 使用(VAR connAdd =新的SqlConnection(数据源=本地主机;初始目录= MajorProject;集成安全性= SSPI))
{
connAdd.Open(); VAR SQL =从PoliceAccount选择policeid在那里的地位='可用'和处理='offcase和postedto ='+ ddllocation.SelectedValue +';
使用(VAR cmdAdd =新SqlDataAdapter的(SQL,connAdd))
{
数据集DS2 =新的DataSet();
cmdAdd.Fill(DS2); memberID1.Items.Clear();
memberID1.DataSource = DS2;
memberID1.DataTextField =MEMBERID;
memberID1.DataValueField =MEMBERID;
memberID1.DataBind();
memberID1.Items.Insert(0,新的ListItem(请选择一个会员ID,));
memberID1.SelectedIndex = 0; memberID2.Items.Clear();
memberID2.DataSource = DS2;
memberID2.DataTextField =MEMBERID;
memberID2.DataValueField =MEMBERID;
memberID2.DataBind();
memberID2.Items.Insert(0,新的ListItem(请选择一个会员ID,));
memberID2.SelectedIndex = 0; memberID3.Items.Clear();
memberID3.DataSource = DS2;
memberID3.DataTextField =MEMBERID;
memberID3.DataValueField =MEMBERID;
memberID3.DataBind();
memberID3.Items.Insert(0,新的ListItem(请选择一个会员ID,));
memberID3.SelectedIndex = 0; }
更新的
有关现在我能够让我的其他DDL来重新绑定,并选择默认值时,缓存中的其他DropDownList中选定的值。然而,当我选择其他的ID,这个ID被删除,它不会重新绑定其他DDL。
保护无效FillddlLocations()
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid1.Visible = FALSE;
ddlpid2.Visible = FALSE;
ddlpid3.Visible = FALSE;
ddlpid4.Visible = FALSE;
ddlpid5.Visible = FALSE;
} 保护无效FillDropdown(DropDownList的DDL)
{ 使用(VAR connAdd =新的SqlConnection(数据源=本地主机;初始目录= MajorProject;集成安全性= SSPI))
{
connAdd.Open(); VAR SQL =从PoliceAccount选择policeid在那里的地位='可用'和处理='offcase和postedto ='+ ddllocation.SelectedValue +';
使用(VAR cmdAdd =新SqlDataAdapter的(SQL,connAdd))
{
数据集DS2 =新的DataSet();
cmdAdd.Fill(DS2); ddl.Items.Clear();
ddl.DataSource = DS2;
ddl.DataBind();
ddl.Items.Insert(0,新的ListItem(警察ID,));
ddl.SelectedIndex = 0; } }
} 保护无效ddlpid1_SelectedIndexChanged(对象发件人,EventArgs的发送)
{ 如果(ddlpid1.SelectedIndex大于0)
{ 会话[PID1] = ddlpid1.SelectedValue; 列表项removeItem2 = ddlpid2.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
列表项removeItem3 = ddlpid3.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
列表项removeItem4 = ddlpid4.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
列表项removeItem5 = ddlpid5.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
} 其他 如果(ddlpid1.SelectedItem.Text.Equals(警察ID))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid2.SelectedValue =(字符串)会议[PID2];
ddlpid2_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid3.SelectedValue =(字符串)会议[PID3];
ddlpid3_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid4.SelectedValue =(字符串)会议[PID4];
ddlpid4_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid5.SelectedValue =(字符串)会议[PID5];
ddlpid5_SelectedIndexChanged(这一点,EventArgs.Empty);
} } 保护无效ddlpid2_SelectedIndexChanged(对象发件人,EventArgs的发送)
{ 如果(ddlpid2.SelectedIndex大于0)
{ 会话[PID2] = ddlpid2.SelectedValue;
列表项removeItem1 = ddlpid1.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
列表项removeItem3 = ddlpid3.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
列表项removeItem4 = ddlpid4.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
列表项removeItem5 = ddlpid5.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
否则,如果(ddlpid2.SelectedItem.Text.Equals(警察ID))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5); ddlpid1.SelectedValue =(字符串)会议[PID1];
ddlpid1_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid3.SelectedValue =(字符串)会议[PID3];
ddlpid3_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid4.SelectedValue =(字符串)会议[PID4];
ddlpid4_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid5.SelectedValue =(字符串)会议[PID5];
ddlpid5_SelectedIndexChanged(这一点,EventArgs.Empty);
}
} 保护无效ddlpid3_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
如果(ddlpid3.SelectedIndex大于0)
{ 会话[PID3] = ddlpid3.SelectedValue;
列表项removeItem1 = ddlpid1.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
列表项removeItem2 = ddlpid2.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
列表项removeItem4 = ddlpid4.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
列表项removeItem5 = ddlpid5.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
否则,如果(ddlpid3.SelectedItem.Text.Equals(警察ID))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5); ddlpid1.SelectedValue =(字符串)会议[PID1];
ddlpid1_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid2.SelectedValue =(字符串)会议[PID2];
ddlpid2_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid4.SelectedValue =(字符串)会议[PID4];
ddlpid4_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid5.SelectedValue =(字符串)会议[PID5];
ddlpid5_SelectedIndexChanged(这一点,EventArgs.Empty);
}
} 保护无效ddlpid4_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
如果(ddlpid4.SelectedIndex大于0)
{
会话[PID4] = ddlpid4.SelectedValue; 列表项removeItem1 = ddlpid1.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
列表项removeItem2 = ddlpid2.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
列表项removeItem3 = ddlpid3.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
列表项removeItem5 = ddlpid5.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
} 否则,如果(ddlpid4.SelectedItem.Text.Equals(警察ID))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5); ddlpid1.SelectedValue =(字符串)会议[PID1];
ddlpid1_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid2.SelectedValue =(字符串)会议[PID2];
ddlpid2_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid3.SelectedValue =(字符串)会议[PID3];
ddlpid3_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid5.SelectedValue =(字符串)会议[PID5];
ddlpid5_SelectedIndexChanged(这一点,EventArgs.Empty);
}
} 保护无效ddlpid5_SelectedIndexChanged(对象发件人,EventArgs的发送)
{ 如果(ddlpid5.SelectedIndex大于0)
{ 会话[PID5] = ddlpid5.SelectedValue;
列表项removeItem1 = ddlpid1.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
列表项removeItem2 = ddlpid2.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
列表项removeItem3 = ddlpid3.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
列表项removeItem4 = ddlpid4.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid4.Items.Remove(removeItem4); } 否则,如果(ddlpid5.SelectedItem.Text.Equals(警察ID))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5); ddlpid1.SelectedValue =(字符串)会议[PID1];
ddlpid1_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid2.SelectedValue =(字符串)会议[PID2];
ddlpid2_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid3.SelectedValue =(字符串)会议[PID3];
ddlpid3_SelectedIndexChanged(这一点,EventArgs.Empty); ddlpid4.SelectedValue =(字符串)会议[PID4];
ddlpid4_SelectedIndexChanged(这一点,EventArgs.Empty);
} }
首先,我会成立了的AutoPostBack 属性的下拉列表中为true在我的标记:
< ASP:DropDownList的ID =memberID1的AutoPostBack =真=服务器可见=假OnSelectedIndexChanged =ddlpid1_SelectedIndexChanged>
< / ASP:DropDownList的>
< ASP:DropDownList的ID =memberID2的AutoPostBack =真=服务器可见=假OnSelectedIndexChanged =ddlpid2_SelectedIndexChanged>
< / ASP:DropDownList的>
< ASP:DropDownList的ID =memberID3的AutoPostBack =真=服务器可见=假OnSelectedIndexChanged =ddlpid3_SelectedIndexChanged>
< / ASP:DropDownList的>
更新:我们可以选择的值存储在视图状态和重新填充dropdownlists像下面后检索:
公共部分类WebForm2:System.Web.UI.Page
{
布尔bFlag = TRUE; 保护无效的Page_Load(对象发件人,EventArgs的发送)
{
如果(!的IsPostBack)
{
FillddlLocations();
}
} //属性存储在ViewState中选定值 保护字符串MemberID1Selection
{
得到
{
如果(的ViewState [MemberID1Selection]!= NULL)
返回的ViewState [MemberID1Selection]的ToString()。
返回;
}
集合{的ViewState [MemberID1Selection] =值; }
} 保护字符串MemberID2Selection
{
得到
{
如果(的ViewState [MemberID2Selection]!= NULL)
返回的ViewState [MemberID2Selection]的ToString()。
返回;
}
集合{的ViewState [MemberID2Selection] =值; }
} 保护字符串MemberID3Selection
{
得到
{
如果(的ViewState [MemberID3Selection]!= NULL)
返回的ViewState [MemberID3Selection]的ToString()。
返回;
}
集合{的ViewState [MemberID3Selection] =值; }
}
保护无效FillddlLocations()
{
FillDropdown(memberID1);
FillDropdown(memberID2);
FillDropdown(memberID3);
memberID1.Visible = TRUE;
memberID2.Visible = TRUE;
memberID3.Visible = TRUE;
} 保护无效FillDropdown(DropDownList的DDL)
{ 使用(VAR connAdd =新的SqlConnection(数据源=本地主机;初始目录= MajorProject;集成安全性= SSPI))
{
connAdd.Open(); VAR SQL =从PoliceAccount选择policeid在那里的地位='可用'和处理='offcase和postedto ='+ ddllocation.SelectedValue +';
使用(VAR cmdAdd =新SqlDataAdapter的(SQL,connAdd))
{
数据集DS2 =新的DataSet();
cmdAdd.Fill(DS2);
ddl.Items.Clear();
ddl.DataSource = DS2;
ddl.DataTextField =MEMBERID;
ddl.DataValueField =MEMBERID;
ddl.DataBind();
ddl.Items.Insert(0,新的ListItem(请选择一个会员ID,));
ddl.SelectedIndex = 0; } }
} 保护无效IndexChanged(DropDownList的ddlChanged,DropDownList的ddlToFilter1,DropDownList的ddlToFilter2)
{
字符串removeValue1 = ddlChanged == memberID1? MemberID1Selection:(ddlChanged == memberID2 MemberID2Selection:MemberID3Selection);
字符串selValue2 = ddlChanged == memberID1? MemberID2Selection:(ddlChanged == memberID2 MemberID1Selection:MemberID1Selection);
字符串selValue3 = ddlChanged == memberID1? MemberID3Selection:(ddlChanged == memberID2 MemberID3Selection:MemberID2Selection); bFlag = FALSE; // prevent下再fireing的$ C $,而更改索引
如果(removeValue1!=)
{
列表项ITEM1 = ddlToFilter1.Items.FindByValue(removeValue1);
ddlToFilter1.Items.Remove(ITEM1);
列表项ITEM2 = ddlToFilter2.Items.FindByValue(removeValue1);
ddlToFilter2.Items.Remove(ITEM2);
} 如果(selValue3!=)
{
列表项项目3 = ddlToFilter1.Items.FindByValue(selValue3);
ddlToFilter1.Items.Remove(项目3);
}
如果(selValue2!=)
{
列表项ITEM4 = ddlToFilter2.Items.FindByValue(selValue2);
ddlToFilter2.Items.Remove(ITEM4);
} bFlag = FALSE;
ddlToFilter1.SelectedIndex = ddlToFilter1.Items.IndexOf(ddlToFilter1.Items.FindByValue(selValue2));
ddlToFilter2.SelectedIndex = ddlToFilter2.Items.IndexOf(ddlToFilter2.Items.FindByValue(selValue3));
} 保护无效ddlpid1_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
MemberID1Selection = memberID1.SelectedValue;
如果(bFlag)
{
FillDropdown(memberID2);
FillDropdown(memberID3);
IndexChanged(memberID1,memberID2,memberID3);
}
} 保护无效ddlpid2_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
MemberID2Selection = memberID2.SelectedValue;
如果(bFlag)
{
FillDropdown(memberID1);
FillDropdown(memberID3);
IndexChanged(memberID2,memberID1,memberID3);
}
}
保护无效ddlpid3_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
MemberID3Selection = memberID3.SelectedValue;
如果(bFlag)
{
FillDropdown(memberID1);
FillDropdown(memberID2);
IndexChanged(memberID3,memberID1,memberID2);
}
}
}
我已经测试code,它是为我工作。希望它能帮助!
I have multiple dropdownlist box all querying the same column, same table and from the same database. For example under memberID column i have the following IDs.
- 12345
- 23456
- 34567
And i have 3 different dropdownlist box as shown below
<asp:DropDownList ID="memberID3" runat="server" Visible="false" OnSelectedIndexChanged="ddlpid3_SelectedIndexChanged" >
</asp:DropDownList>
<asp:DropDownList ID="memberID1" runat="server" Visible="false" OnSelectedIndexChanged="ddlpid1_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="memberID2" runat="server" Visible="false" OnSelectedIndexChanged="ddlpid2_SelectedIndexChanged">
</asp:DropDownList>
I added update panel between the dropdownlist so as to allow my dropdownlist to refresh upon any updates/selections.
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
For instance, when memberID1 selected 12345, the other 2 dropdownlist (memberID2 and 3) will not display the ID 12345. Vice versa, when memberID1 select the default value of the dropdownlist, the ID reappears in the other 2 dropdownlistbox. I have added a default value for all of the DDL.
memeberID(number).Items.Insert(0, new ListItem(" Please select a Member ID", ""));
memeberID(number).SelectedIndex = 0;
If i have not mistaken the property of update panel, isn't that able to make this function work?
here is the binding code as requested.
protected void ddllocation_SelectedIndexChanged(object sender, EventArgs e)
{
using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"))
{
connAdd.Open();
var sql = "Select policeid from PoliceAccount where status ='available' and handle ='offcase' and postedto='" + ddllocation.SelectedValue + "'";
using (var cmdAdd = new SqlDataAdapter(sql, connAdd))
{
DataSet ds2 = new DataSet();
cmdAdd.Fill(ds2);
memberID1.Items.Clear();
memberID1.DataSource = ds2;
memberID1.DataTextField = "memberID";
memberID1.DataValueField = "memberID";
memberID1.DataBind();
memberID1.Items.Insert(0, new ListItem("Please select a Member ID", ""));
memberID1.SelectedIndex = 0;
memberID2.Items.Clear();
memberID2.DataSource = ds2;
memberID2.DataTextField = "memberID";
memberID2.DataValueField = "memberID";
memberID2.DataBind();
memberID2.Items.Insert(0, new ListItem("Please select a Member ID", ""));
memberID2.SelectedIndex = 0;
memberID3.Items.Clear();
memberID3.DataSource = ds2;
memberID3.DataTextField = "memberID";
memberID3.DataValueField = "memberID";
memberID3.DataBind();
memberID3.Items.Insert(0, new ListItem("Please select a Member ID", ""));
memberID3.SelectedIndex = 0;
}
UPDATE
For now i'm able to allow my other ddl to re-bind and cache the selected value in the other dropdownlist when the default value is selected. However, when i select other ID, the ID are being removed and it wont re-bind the other ddl.
protected void FillddlLocations()
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid1.Visible = false;
ddlpid2.Visible = false;
ddlpid3.Visible = false;
ddlpid4.Visible = false;
ddlpid5.Visible = false;
}
protected void FillDropdown(DropDownList ddl)
{
using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"))
{
connAdd.Open();
var sql = "Select policeid from PoliceAccount where status ='available' and handle ='offcase' and postedto='" + ddllocation.SelectedValue + "'";
using (var cmdAdd = new SqlDataAdapter(sql, connAdd))
{
DataSet ds2 = new DataSet();
cmdAdd.Fill(ds2);
ddl.Items.Clear();
ddl.DataSource = ds2;
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("Police ID", ""));
ddl.SelectedIndex = 0;
}
}
}
protected void ddlpid1_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlpid1.SelectedIndex > 0)
{
Session["pid1"] = ddlpid1.SelectedValue;
ListItem removeItem2 = ddlpid2.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
ListItem removeItem3 = ddlpid3.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
ListItem removeItem4 = ddlpid4.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
ListItem removeItem5 = ddlpid5.Items.FindByValue(ddlpid1.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
else
if (ddlpid1.SelectedItem.Text.Equals("Police ID"))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid2.SelectedValue = (String)Session["pid2"];
ddlpid2_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid3.SelectedValue = (String)Session["pid3"];
ddlpid3_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid4.SelectedValue = (String)Session["pid4"];
ddlpid4_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid5.SelectedValue = (String)Session["pid5"];
ddlpid5_SelectedIndexChanged(this, EventArgs.Empty);
}
}
protected void ddlpid2_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlpid2.SelectedIndex > 0)
{
Session["pid2"] = ddlpid2.SelectedValue;
ListItem removeItem1 = ddlpid1.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
ListItem removeItem3 = ddlpid3.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
ListItem removeItem4 = ddlpid4.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
ListItem removeItem5 = ddlpid5.Items.FindByValue(ddlpid2.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
else if (ddlpid2.SelectedItem.Text.Equals("Police ID"))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid1.SelectedValue = (String)Session["pid1"];
ddlpid1_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid3.SelectedValue = (String)Session["pid3"];
ddlpid3_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid4.SelectedValue = (String)Session["pid4"];
ddlpid4_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid5.SelectedValue = (String)Session["pid5"];
ddlpid5_SelectedIndexChanged(this, EventArgs.Empty);
}
}
protected void ddlpid3_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlpid3.SelectedIndex > 0)
{
Session["pid3"] = ddlpid3.SelectedValue;
ListItem removeItem1 = ddlpid1.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
ListItem removeItem2 = ddlpid2.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
ListItem removeItem4 = ddlpid4.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
ListItem removeItem5 = ddlpid5.Items.FindByValue(ddlpid3.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
else if (ddlpid3.SelectedItem.Text.Equals("Police ID"))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid1.SelectedValue = (String)Session["pid1"];
ddlpid1_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid2.SelectedValue = (String)Session["pid2"];
ddlpid2_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid4.SelectedValue = (String)Session["pid4"];
ddlpid4_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid5.SelectedValue = (String)Session["pid5"];
ddlpid5_SelectedIndexChanged(this, EventArgs.Empty);
}
}
protected void ddlpid4_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlpid4.SelectedIndex > 0)
{
Session["pid4"] = ddlpid4.SelectedValue;
ListItem removeItem1 = ddlpid1.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
ListItem removeItem2 = ddlpid2.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
ListItem removeItem3 = ddlpid3.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
ListItem removeItem5 = ddlpid5.Items.FindByValue(ddlpid4.SelectedValue);
ddlpid5.Items.Remove(removeItem5);
}
else if (ddlpid4.SelectedItem.Text.Equals("Police ID"))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid1.SelectedValue = (String)Session["pid1"];
ddlpid1_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid2.SelectedValue = (String)Session["pid2"];
ddlpid2_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid3.SelectedValue = (String)Session["pid3"];
ddlpid3_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid5.SelectedValue = (String)Session["pid5"];
ddlpid5_SelectedIndexChanged(this, EventArgs.Empty);
}
}
protected void ddlpid5_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlpid5.SelectedIndex > 0)
{
Session["pid5"] = ddlpid5.SelectedValue;
ListItem removeItem1 = ddlpid1.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid1.Items.Remove(removeItem1);
ListItem removeItem2 = ddlpid2.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid2.Items.Remove(removeItem2);
ListItem removeItem3 = ddlpid3.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid3.Items.Remove(removeItem3);
ListItem removeItem4 = ddlpid4.Items.FindByValue(ddlpid5.SelectedValue);
ddlpid4.Items.Remove(removeItem4);
}
else if (ddlpid5.SelectedItem.Text.Equals("Police ID"))
{
FillDropdown(ddlpid1);
FillDropdown(ddlpid2);
FillDropdown(ddlpid3);
FillDropdown(ddlpid4);
FillDropdown(ddlpid5);
ddlpid1.SelectedValue = (String)Session["pid1"];
ddlpid1_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid2.SelectedValue = (String)Session["pid2"];
ddlpid2_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid3.SelectedValue = (String)Session["pid3"];
ddlpid3_SelectedIndexChanged(this, EventArgs.Empty);
ddlpid4.SelectedValue = (String)Session["pid4"];
ddlpid4_SelectedIndexChanged(this, EventArgs.Empty);
}
}
First of all, I would set the AutoPostBack property for dropdowns to true in my markup:
<asp:DropDownList ID="memberID1" AutoPostBack="true" runat="server" Visible="false" OnSelectedIndexChanged="ddlpid1_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="memberID2" AutoPostBack="true" runat="server" Visible="false" OnSelectedIndexChanged="ddlpid2_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="memberID3" AutoPostBack="true" runat="server" Visible="false" OnSelectedIndexChanged="ddlpid3_SelectedIndexChanged" >
</asp:DropDownList>
Update: We can store selected values in view state and retrieve after repopulating the dropdownlists like below:
public partial class WebForm2 : System.Web.UI.Page
{
bool bFlag = true;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillddlLocations();
}
}
//Properties to store selected value in ViewState
protected string MemberID1Selection
{
get
{
if (ViewState["MemberID1Selection"] != null)
return ViewState["MemberID1Selection"].ToString();
return "";
}
set { ViewState["MemberID1Selection"] = value; }
}
protected string MemberID2Selection
{
get
{
if (ViewState["MemberID2Selection"] != null)
return ViewState["MemberID2Selection"].ToString();
return "";
}
set { ViewState["MemberID2Selection"] = value; }
}
protected string MemberID3Selection
{
get
{
if (ViewState["MemberID3Selection"] != null)
return ViewState["MemberID3Selection"].ToString();
return "";
}
set { ViewState["MemberID3Selection"] = value; }
}
protected void FillddlLocations()
{
FillDropdown(memberID1);
FillDropdown(memberID2);
FillDropdown(memberID3);
memberID1.Visible = true;
memberID2.Visible = true;
memberID3.Visible = true;
}
protected void FillDropdown(DropDownList ddl)
{
using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"))
{
connAdd.Open();
var sql = "Select policeid from PoliceAccount where status ='available' and handle ='offcase' and postedto='" + ddllocation.SelectedValue + "'";
using (var cmdAdd = new SqlDataAdapter(sql, connAdd))
{
DataSet ds2 = new DataSet();
cmdAdd.Fill(ds2);
ddl.Items.Clear();
ddl.DataSource = ds2;
ddl.DataTextField = "memberID";
ddl.DataValueField = "memberID";
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("Please select a Member ID", ""));
ddl.SelectedIndex = 0;
}
}
}
protected void IndexChanged(DropDownList ddlChanged, DropDownList ddlToFilter1, DropDownList ddlToFilter2)
{
string removeValue1 = ddlChanged == memberID1 ? MemberID1Selection : (ddlChanged == memberID2 ? MemberID2Selection : MemberID3Selection);
string selValue2 = ddlChanged == memberID1 ? MemberID2Selection : (ddlChanged == memberID2 ? MemberID1Selection : MemberID1Selection);
string selValue3 = ddlChanged == memberID1 ? MemberID3Selection : (ddlChanged == memberID2 ? MemberID3Selection : MemberID2Selection);
bFlag = false;//Prevent fireing the code again while changing the index
if (removeValue1 != "")
{
ListItem item1 = ddlToFilter1.Items.FindByValue(removeValue1);
ddlToFilter1.Items.Remove(item1);
ListItem item2 = ddlToFilter2.Items.FindByValue(removeValue1);
ddlToFilter2.Items.Remove(item2);
}
if (selValue3 != "")
{
ListItem item3 = ddlToFilter1.Items.FindByValue(selValue3);
ddlToFilter1.Items.Remove(item3);
}
if (selValue2 != "")
{
ListItem item4 = ddlToFilter2.Items.FindByValue(selValue2);
ddlToFilter2.Items.Remove(item4);
}
bFlag = false;
ddlToFilter1.SelectedIndex = ddlToFilter1.Items.IndexOf(ddlToFilter1.Items.FindByValue(selValue2));
ddlToFilter2.SelectedIndex = ddlToFilter2.Items.IndexOf(ddlToFilter2.Items.FindByValue(selValue3));
}
protected void ddlpid1_SelectedIndexChanged(object sender, EventArgs e)
{
MemberID1Selection = memberID1.SelectedValue;
if (bFlag)
{
FillDropdown(memberID2);
FillDropdown(memberID3);
IndexChanged(memberID1, memberID2, memberID3);
}
}
protected void ddlpid2_SelectedIndexChanged(object sender, EventArgs e)
{
MemberID2Selection = memberID2.SelectedValue;
if (bFlag)
{
FillDropdown(memberID1);
FillDropdown(memberID3);
IndexChanged(memberID2, memberID1, memberID3);
}
}
protected void ddlpid3_SelectedIndexChanged(object sender, EventArgs e)
{
MemberID3Selection = memberID3.SelectedValue;
if (bFlag)
{
FillDropdown(memberID1);
FillDropdown(memberID2);
IndexChanged(memberID3, memberID1, memberID2);
}
}
}
I have tested the code and it is working for me. Hope it helps!
这篇关于DROPDOWNLIST将更新面板后不更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!