Hi
I am using asp: ScriptManager and UpdatePanel control and under this updatepanel i have placed 3 'Promitheus' version ComboBoxes(DistrictList, SchoolsList and TeachersList) all ComboBoxe's data sources is bind at code behind.
and bussiness logic is : upon selection of District trigger the event to get school list and upon selection of school trigger event to get teachers list.
Bussiness logic works very greate, but the thing is some times combobox freezes/locks the browser for more than half a minute,
Design Code :
| <table> |
| <tr> |
| <td class="AdminLabels"> |
| LEA: |
| </td> |
| <td> |
| <telerik:RadComboBox ID="ddlLEA" runat="server" AutoPostBack="True" MarkFirstMatch="True" |
| NoWrap="True" OnSelectedIndexChanged="ddlLEA_SelectedIndexChanged" Skin="Default" |
| Width="480px" Height="500px"> |
| <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation> |
| <ExpandAnimation Type="OutQuart"></ExpandAnimation> |
| </telerik:RadComboBox> |
| </td> |
| </tr> |
| <tr> |
| <td style="vertical-align: top"> |
| <div class="floatLeft"> |
| <div class="AdminLabels"> |
| School: |
| </div> |
| <div class="AdminLabels"> |
| Acadamic Year: |
| </div> |
| <div class="AdminLabels"> |
| Are you a TITLE I School: |
| </div> |
| <div class="AdminLabels"> |
| Teacher List: |
| </div> |
| </div> |
| </td> |
| <td style="vertical-align: top"> |
| <div> |
| <asp:UpdatePanel ID="updtpnlSchools" runat="server"> |
| <ContentTemplate> |
| <div class="AdminLabels"> |
| <telerik:RadComboBox ID="ddlSchool" runat="server" Width="480px" AutoPostBack="True" |
| MarkFirstMatch="True" NoWrap="True" OnSelectedIndexChanged="ddlSchool_SelectedIndexChanged" |
| Skin="Default" AllowCustomText="True" Height="500px"> |
| <CollapseAnimation Duration="200" Type="OutQuint" /> |
| <ExpandAnimation Type="OutQuart" /> |
| </telerik:RadComboBox> |
| </div> |
| <div class="AdminLabels"> |
| <telerik:RadComboBox ID="ddlFiscalYear" runat="server" Width="75px" DataSourceID="SqlDataSource_FiscalYears" |
| DataTextField="FiscalYear" DataValueField="FiscalYear" AutoPostBack="True" MarkFirstMatch="True" |
| NoWrap="True" Skin="Default" |
| onselectedindexchanged="ddlFiscalYear_SelectedIndexChanged" Height="200px"> |
| <CollapseAnimation Duration="200" Type="OutQuint" /> |
| <ExpandAnimation Type="OutQuart" /> |
| </telerik:RadComboBox> |
| </div> |
| <div class="AdminLabels"> |
| <telerik:RadComboBox ID="ddlTitleone" runat="server" MarkFirstMatch="True" |
| NoWrap="True" Width="75px" Height="250px" RadComboBoxImagePosition="Right"> |
| <Items> |
| <telerik:RadComboBoxItem Value="--?--" Text="--?--" /> |
| <telerik:RadComboBoxItem Value="N" Text ="No" /> |
| <telerik:RadComboBoxItem Value="Y" Text ="Yes" /> |
| </Items> |
| <CollapseAnimation Duration="200" Type="OutQuint" /> |
| <ExpandAnimation Type="OutQuart" /> |
| </telerik:RadComboBox> |
| </div> |
| <div class="AdminLabels floatLeft"> |
| <asp:UpdatePanel ID="updpnlTeacher" runat="server"> |
| <ContentTemplate> |
| <telerik:RadComboBox ID="ddlTeachers" runat="server" MarkFirstMatch="True" |
| NoWrap="True" Skin="Default" AllowCustomText="True" |
| Width="200px" Height="500px"> |
| <CollapseAnimation Duration="200" Type="OutQuint" /> |
| <ExpandAnimation Type="OutQuart" /> |
| </telerik:RadComboBox> |
| </ContentTemplate> |
| <Triggers> |
| <asp:AsyncPostBackTrigger ControlID="ddlSchool" EventName="SelectedIndexChanged" /> |
| <asp:AsyncPostBackTrigger ControlID="ddlFiscalYear" EventName="SelectedIndexChanged" /> |
| </Triggers> |
| </asp:UpdatePanel> |
| </div> |
| <asp:Button ID="btnload" Style="float: right" runat="server" Text="Display Teacher Information." |
| OnClick="btnload_Click" /> |
| </ContentTemplate> |
| <Triggers> |
| <asp:AsyncPostBackTrigger ControlID="ddlLEA" EventName="SelectedIndexChanged" /> |
| </Triggers> |
| </asp:UpdatePanel> |
| </div> |
| <asp:SqlDataSource ID="SqlDataSource_FiscalYears" runat="server" ConnectionString="<%$ ConnectionStrings:EdSHConnectionString %>" |
| SelectCommand="hqtSP_FiscalYears" SelectCommandType="StoredProcedure"></asp:SqlDataSource> |
| <asp:HiddenField ID="HiddenField1" runat="server" /> |
| </td> |
| </tr> |
| </table> |
Code Behind:(Page_Load)
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (!IsPostBack) |
| { |
| try |
| { |
| TeacherInfo1.Visible = false; |
| ddlFiscalYear.SelectedValue = getfiscalyear().ToString(); |
| ddlLEA.DataSource = dds.Districts();//dds is a object used to verify user |
| ddlLEA.DataTextField = "District"; |
| ddlLEA.DataValueField = "testdistrictID"; |
| ddlLEA.DataBind(); |
| ddlLEA.Enabled = dds.EnableDistritcts; |
| if (dds.EnableDistritcts) |
| ddlLEA.AllowCustomText = true; |
| else |
| ddlLEA.AllowCustomText = false; |
| ddlSchool.DataSource = dds.Schools(AppropriateParameter); |
| ddlSchool.DataTextField = "School"; |
| ddlSchool.DataValueField = "testschoolID"; |
| ddlSchool.DataBind(); |
| ddlSchool.Enabled = dds.EnableSchools; |
| if (dds.EnableSchools) |
| ddlSchool.AllowCustomText = true; |
| else |
| ddlSchool.AllowCustomText = false; |
| ddlTeachers.DataSource = dds.Teachers(AppropriateParameters); |
| ddlTeachers.DataTextField = "TeacherName"; |
| ddlTeachers.DataValueField = "TeachernameID"; |
| ddlTeachers.DataBind(); |
| } |
| catch (Exception ex) |
| { |
| ErrHandler.WriteError(ex, ex.Message); |
| } |
| } |
| } |
Code Behind:(Ajax triggering events)
| protected void ddlLEA_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) |
| { |
| try |
| { |
| //update school list |
| ddlSchool.DataSource = dds.Schools(Appropriateparameters) |
| ddlSchool.DataTextField = "School"; |
| ddlSchool.DataValueField = "testschoolID"; |
| ddlSchool.DataBind(); |
| ddlSchool.Enabled = dds.EnableSchools; |
| //update teachers list |
| ddlTeachers.DataSource = dds.Teachers(Appropriateparameters); |
| ddlTeachers.DataTextField = "TeacherName"; |
| ddlTeachers.DataValueField = "TeachernameID"; |
| ddlTeachers.DataBind(); |
| } |
| catch (Exception ex) |
| { |
| ErrHandler.WriteError(ex, ex.Message); |
| } |
| } |
| //School Selected |
| protected void ddlSchool_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) |
| { |
| try{ |
| //update teachers list |
| ddlTeachers.DataSource = dds.Teachers(Appropriateparameters); |
| ddlTeachers.DataTextField = "TeacherName"; |
| ddlTeachers.DataValueField = "TeachernameID"; |
| ddlTeachers.DataBind(); |
| School school = new School(); |
| school.EntityID = int.Parse(ddlSchool.SelectedValue.ToString()); |
| school.FiscalYear = int.Parse(ddlFiscalYear.SelectedValue.ToString()); |
| ddlTitleone.SelectedValue = school.Title(); |
| ddlTitleone.Enabled = school.Enabled; |
| //ddlTeachers.Focus(); |
| TeacherInfo1.Visible = false; |
| } |
| catch (Exception ex) |
| { |
| ErrHandler.WriteError(ex, ex.Message); |
| } |
| } |
District List returns 750 rows/items.
Please help me.