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