編輯3:固定!動態填充DropDownList不保留價值回發ASP.net c#
我終於找到了問題所在。 每個控件都在asp:Table中,並且我必須在此表上使用EnableViewState =「true」,以便能夠在回發後保留該值。
謝謝大家的答案!
首先,原諒我,如果我的英文不是很好,但我會努力成爲最精確。 我從昨天起就與我的問題鬥爭,並一直在搜索網絡上的所有答案..
我有一個窗體,這是「創建一個新的配置文件」。在這個表單中我有一些DropDownLists和TextBoxes,我的問題是關於DropDownLists。
4 DropDown在我的頁面上。
讓我們專注於去年2下拉:
第一個下拉動態填充它的價值函數的第二個。
看到這樣的畫面: http://image.noelshack.com/fichiers/2013/22/1369819471-picture-help.png
第一DDL:
<asp:DropDownList ID="ddlTypePN" runat="server" DataSourceID="SqlTypePN" EnableViewState="true"
DataTextField="libelle" DataValueField="valeur" AutoPostBack="true" OnSelectedIndexChanged="ddlTypePN_SelectedIndexChanged"
OnDataBound="ddlTypePN_DataBound" > </asp:DropDownList>
第二DDL:
<asp:DropDownList runat="server" ID="ddlFctPN" AppendDataBoundItems="false" OnDataBound="ddlFctPN_DataBound" > </asp:DropDownList>
填充方法:
void populateDdl()
{
string val = "fct"+ddlTypePN.SelectedValue.ToString().Trim(); // Used for SELECT
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["My_DB"].ConnectionString);
ddlFctPN.Items.Clear();
DataTable subjects = new DataTable();
try
{
SqlDataAdapter adapter = new SqlDataAdapter("My SELECT", sqlConn);
adapter.Fill(subjects);
ddlFctPN.DataSource = subjects;
ddlFctPN.DataTextField = "libelle";
ddlFctPN.DataValueField = "valeur";
ddlFctPN.DataBind();
}
catch (Exception ex)
{
lblErr.Text = ex.Message;
}
ddlFctPN.Items.Insert(0, new ListItem("Sélectionnez...", "null"));
}
當我在第二個ddl中選擇一個項目並且發生回發時(即使它來自我之前提到的其他下拉列表),SelectedValue成爲第一個值。 (「Selectionnez ...」)
這似乎是我的第二個下拉列表僅在每次回發界,即使是因爲我的第一個下拉的的SelectedIndexChanged不.. 的的SelectedIndexChanged第一下拉總是叫上回發,所以它在每個PostBack中拋出「populateDdl()」(如果選擇了一個值)。
當我點擊提交按鈕,它在我的數據庫中註冊一個空值。
我錯過了什麼?
EDIT1:
這裏是pageLoad的:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlTypeProf.DataBind(); // don't care
ddlSsoSrc.DataBind(); // don't care
ddlTypePN.DataBind(); // The ddl that populate my 2nd ddl
}
}
,這裏是第一個DDL的SelectedIndexChanged:
protected void ddlTypePN_SelectedIndexChanged(object sender, EventArgs e)
{
string type = ddlTypePN.SelectedValue.ToString().Trim();
// if PNT
if (type.ToUpper().Trim().Equals("PNT"))
{
ddlFctPN.Enabled = true;
ddlTypeAv.Enabled = true;
rfvTypeAv.Enabled = true;
populateDdl();
}
else if (type.ToUpper().Trim().Equals("PNC"))
{
ddlFctPN.Enabled = true;
ddlTypeAv.Enabled = false;
rfvTypeAv.Enabled = false;
populateDdl();
}
}
編輯2:
見FOLL由於圖片:
http://image.noelshack.com/fichiers/2013/22/1369830738-help2.png
你可以看到,我的第二個DDL(「Fonction」)填寫正確,但是當我點擊提交按鈕:值變爲空值(「Sélectionnez......」)所以我的RequiredFieldValidator使頁面無效!
我已經嘗試過!的IsPostBack,但仍是同樣的問題。 我不明白爲什麼我應該把這段代碼放在裏面!IsPostBack是因爲如果我填充第二個ddl時,我的第一個SelectedIndexChanged被拋出,它被填充到PostBack上?我錯了嗎? –
你還卡住了嗎? –