Hi,
I have a dropdownlist in a usercontrol as shown below
<asp:dropdownlist id="ddlLanguage" runat="server" AutoPostBack="true" EnableViewState="true" onselectedindexchanged="ddlLanguage_SelectedIndexChanged">
</asp:dropdownlist>
in code behind
if (!IsPostBack)
{
//dt - is list of languages availbale in DB
//value[0]-contains lang currently to be binded to dropdownlist based
//remaining values (values [1]) to are to be populated to textbox
LoadModuleInfo(dt,values)
}
else
{
LoadModuleInfo(dt,new_values)
}
private void LoadModuleInfo(System.Data.DataTable dtLanguages, string[] values)
{
this.txbxModuleName.Text = values[1];
this.ddlLanguage.DataSource = dtLanguages;
this.ddlLanguage.DataTextField = "language_description";
this.ddlLanguage.DataValueField = "language";
this.ddlLanguage.DataBind();
// set up selections on the screen
this.ddlLanguage.SelectedIndex = this.getIndex(dtLanguages, values[0]);
}
protected void ddlLanguage_SelectedIndexChanged(object sender, System.EventArgs e)
{
//get new values ( values[0] and values[1])
LoadModuleInfo(dtLanguages, values);
}
protected int getIndex(DataTable dt, string recordId)
{
int intCt = 0;
foreach (System.Data.DataRow dr in dt.Rows)
{
if (dr[0].ToString() == recordId)
{
break;
}
else
{
intCt++;
}
}
return intCt;
}
I have wriiten the above code to bind the dropdwonliast and to set the seelcted item based on values present in DB.
Suppose, in my DB i have values
en
de
es
fr
it
First time when page loads, i will populate DDL based on value availbale in DB and set selected item of DDL as 'de'. When dropdownlist selection is changed to 'en', english content from DB has to fetched and populated which is happening. If i again change my DDL selection to 'de', my selected change event is not firing.
When i try to remove else case in page load i.e. keep only below in page_load
if (!IsPostBack)
{
LoadModuleInfo(dt,values)
}
Only page_load is happening but not selected change event of DDL
Please help.