I have a combination of RadDropDownLists and RadComboBox's on a page, the last RadComboBox is losing it's selection(s) on PostBack. All other RadDropDownLists and RadComboBox's keep their selections on PostBack. What do I need to do to ensure the selections are not lost. I have tried enabling ViewState and several other suggestions found online, but none resolve the issue. Please advise.
ASPX:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CobraStatusTemplate1.aspx.cs" Inherits="CobraStatus.aspx.CobraStatusTemplate1" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <br /> <telerik:RadDropDownList ID="rdlProject" runat="server" DefaultMessage="Select Project" OnSelectedIndexChanged="rdlProject_SelectedIndexChanged" AutoPostBack="true" Skin="Office2010Black" Enabled="true"> </telerik:RadDropDownList> <telerik:RadDropDownList ID="rdlAnalyst" runat="server" DefaultMessage="Select Analyst" OnSelectedIndexChanged="rdlAnalyst_SelectedIndexChanged" AutoPostBack="true" Skin="Office2010Black" Enabled="false"> </telerik:RadDropDownList> <telerik:RadComboBox ID="rcbControlAccount" runat="server" Text="Select Control Account" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" OnSelectedIndexChanged="rcbControlAccount_SelectedIndexChanged" AutoPostBack="true" Skin="Office2010Black" Enabled="false"> </telerik:RadComboBox> <telerik:RadComboBox ID="rcbEVT" runat="server" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" AutoPostBack="true" Skin="Office2010Black" Enabled="false" OnSelectedIndexChanged="rcbEVT_SelectedIndexChanged"> </telerik:RadComboBox> <br /> <br /> <telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" GroupPanelPosition="Top" OnItemDataBound="RadGrid1_ItemDataBound" OnPreRender="RadGrid1_PreRender" OnBatchEditCommand="RadGrid1_BatchEditCommand" Width="100%" Skin="Office2010Black"> <MasterTableView AutoGenerateColumns="False" EditMode="Batch" CommandItemDisplay="Top" Width="100%"> <CommandItemSettings ShowAddNewRecordButton="False" ShowSaveChangesButton="True" ShowCancelChangesButton="True"></CommandItemSettings> <Columns> <telerik:GridBoundColumn DataField="Project" HeaderText="Project" SortExpression="Project" UniqueName="Project" FilterControlAltText="Filter Project column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Ca1" HeaderText="Control Account" SortExpression="Ca1" UniqueName="Ca1" FilterControlAltText="Filter Ca1 column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Wp" HeaderText="Work Package" SortExpression="Wp" UniqueName="Wp" FilterControlAltText="Filter Wp column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Descrip" HeaderText="Description" SortExpression="Descrip" UniqueName="Descrip" FilterControlAltText="Filter Descrip column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Description" HeaderText="EV Technique" SortExpression="Pmt" UniqueName="Pmt" FilterControlAltText="Filter Pmt column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FullName" HeaderText="Analyst" SortExpression="C5" UniqueName="C5" FilterControlAltText="Filter C5 column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="PcComp" HeaderText="% Complete" SortExpression="PcComp" UniqueName="PcComp" DataType="System.Decimal" FilterControlAltText="Filter PcComp column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Ssd" HeaderText="Baseline Start Date" SortExpression="Ssd" UniqueName="Ssd" DataType="System.DateTime" FilterControlAltText="Filter Ssd column" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Sfd" HeaderText="Baseline Finish Date" SortExpression="Sfd" UniqueName="Sfd" DataType="System.DateTime" FilterControlAltText="Filter Sfd column" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridDateTimeColumn DataField="Asd" HeaderText="Actual Start Date" SortExpression="Asd" UniqueName="Asd" DataType="System.DateTime" FilterControlAltText="Filter Asd column" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="false" HeaderStyle-Width="165px" HeaderStyle-ForeColor="#0000cc"> </telerik:GridDateTimeColumn> <telerik:GridBoundColumn DataField="Afd" HeaderText="Actual Finish Date" SortExpression="Afd" UniqueName="Afd" DataType="System.DateTime" FilterControlAltText="Filter Afd column" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="UpdPcComp" HeaderText="Updated % Comp" SortExpression="UpdPcComp" UniqueName="UpdPcComp" DataType="System.Decimal" FilterControlAltText="Filter UpdPcComp column" ReadOnly="false" HeaderStyle-ForeColor="#0000cc"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="UpdBy" HeaderText="Updated By" SortExpression="UpdBy" UniqueName="UpdBy" FilterControlAltText="Filter UpdBy column" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="UpdDate" HeaderText="Last Updated" SortExpression="UpdDate" UniqueName="UpdDate" DataType="System.DateTime" FilterControlAltText="Filter UpdDate column" DataFormatString="{0:MM/dd/yyyy}" ReadOnly="true"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid></asp:Content>C#:
using System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Web.UI;namespace CobraStatus.aspx{ public partial class CobraStatusTemplate1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { projects(); } private void projects() { DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["FinanceSystemsApplicationsConnectionString"].ConnectionString)) { con.Open(); SqlCommand cmd = new SqlCommand("SELECT ProgramId FROM csProgram ORDER BY ProgramId", con); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt); } rdlProject.DataSource = dt; rdlProject.DataTextField = "ProgramId"; rdlProject.DataValueField = "ProgramId"; rdlProject.DataBind(); } private void analysts() { string project = rdlProject.SelectedValue; DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["FinanceSystemsApplicationsConnectionString"].ConnectionString)) { con.Open(); SqlCommand cmd = new SqlCommand("SELECT DISTINCT csCawp.C5, csAnalysts.EmployeeId, csAnalysts.FullName FROM csCawp INNER JOIN " + "csAnalysts ON csCawp.C5 = csAnalysts.EmployeeId WHERE Project = '" + project + "'", con); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt); } rdlAnalyst.DataSource = dt; rdlAnalyst.DataTextField = "FullName"; rdlAnalyst.DataValueField = "EmployeeId"; rdlAnalyst.DataBind(); } private void controlAccount() { string project = rdlProject.SelectedValue; string analyst = rdlAnalyst.SelectedValue; DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["FinanceSystemsApplicationsConnectionString"].ConnectionString)) { con.Open(); SqlCommand cmd = new SqlCommand("SELECT DISTINCT Ca1 FROM CsCAWP WHERE Project = '" + project + "' AND C5 = " + analyst + "", con); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt); } rcbControlAccount.DataSource = dt; rcbControlAccount.DataTextField = "Ca1"; rcbControlAccount.DataValueField = "Ca1"; rcbControlAccount.DataBind(); } private void evt() { string project = rdlProject.SelectedValue; string analyst = rdlAnalyst.SelectedValue; DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["FinanceSystemsApplicationsConnectionString"].ConnectionString)) { string controlAccount = string.Empty; for (int i = 0; i < rcbControlAccount.CheckedItems.Count; i++) { if (i < rcbControlAccount.CheckedItems.Count - 1) { controlAccount += rcbControlAccount.CheckedItems[i].Value; controlAccount += "'"; controlAccount += ","; controlAccount += "'"; } else { controlAccount += rcbControlAccount.CheckedItems[i].Value; } } conn.Open(); SqlCommand cmnd = new SqlCommand("SELECT DISTINCT csEVT.Code, csEVT.Description FROM csCawp INNER JOIN csEVT ON csCawp.Pmt = csEVT.Code " + "WHERE csCawp.Project = '" + project + "' AND csCawp.C5 = '" + analyst + "' AND csCawp.Ca1 IN ('" + controlAccount + "')", conn); SqlDataAdapter adp = new SqlDataAdapter(cmnd); adp.Fill(dt); } rcbEVT.DataSource = dt; rcbEVT.DataTextField = "Description"; rcbEVT.DataValueField = "Code"; rcbEVT.DataBind(); } protected void rdlProject_SelectedIndexChanged(object sender, Telerik.Web.UI.DropDownListEventArgs e) { analysts(); rdlAnalyst.Enabled = true; } protected void rdlAnalyst_SelectedIndexChanged(object sender, Telerik.Web.UI.DropDownListEventArgs e) { controlAccount(); rcbControlAccount.Enabled = true; } protected void rcbControlAccount_SelectedIndexChanged(object sender, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e) { evt(); rcbEVT.Enabled = true; } protected void rcbEVT_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { RadGrid1.Rebind(); } public DataTable GetDataTable(string query) { String ConnString = ConfigurationManager.ConnectionStrings["FinanceSystemsApplicationsConnectionString"].ConnectionString; SqlConnection conn = new SqlConnection(ConnString); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(query, conn); DataTable myDataTable = new DataTable(); conn.Open(); try { adapter.Fill(myDataTable); } finally { conn.Close(); } return myDataTable; } protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { int rcbCA = rcbControlAccount.CheckedItems.Count; int rcbEvt = rcbEVT.CheckedItems.Count; if (rdlProject.SelectedValue != "" && rdlAnalyst.SelectedValue != "" && rcbCA > 0 && rcbEvt > 0) { string project = rdlProject.SelectedValue; string analyst = rdlAnalyst.SelectedValue; string controlAccount = string.Empty; for (int i = 0; i < rcbControlAccount.CheckedItems.Count; i++) { if (i < rcbControlAccount.CheckedItems.Count - 1) { controlAccount += rcbControlAccount.CheckedItems[i].Value; controlAccount += "'"; controlAccount += ","; controlAccount += "'"; } else { controlAccount += rcbControlAccount.CheckedItems[i].Value; } } string evt = string.Empty; for (int i = 0; i < rcbEVT.CheckedItems.Count; i++) { if (i < rcbEVT.CheckedItems.Count - 1) { evt += rcbEVT.CheckedItems[i].Value; evt += "'"; evt += ","; evt += "'"; } else { evt += rcbEVT.CheckedItems[i].Value; } } RadGrid1.DataSource = GetDataTable("SELECT csCawp.Project, csCawp.Ca1, csCawp.Wp, csCawp.Descrip, csEVT.Description, csAnalysts.FullName, csCawp.PcComp," + "csCawp.Ssd, csCawp.Sfd, csCawp.Asd, csCawp.Afd, csCawp.UpdPcComp, csCawp.UpdDate, csCawp.UpdBy FROM csCawp INNER JOIN csEVT ON csCawp.Pmt = csEVT.Code INNER JOIN " + "csAnalysts ON CsCawp.C5 = csAnalysts.EmployeeId " + " WHERE PROJECT = '" + project + "' AND Ca1 IN ('" + controlAccount + "') AND Pmt IN ('" + evt + "')"); } } protected void Button1_Click(object sender, EventArgs e) { } protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; if (item["PcComp"].Text == "0.000000") item.ForeColor = Color.Red; } } protected void RadGrid1_PreRender(object sender, EventArgs e) { } protected void RadGrid1_BatchEditCommand(object sender, GridBatchEditingEventArgs e) { } }}
Thanks in advance,
Josh
