Hi have a issue with my Telerik RadGrid. It has a column of checkboxes that do not maintain values when the user goes to enter a new item. I have come to the conclusion that the selectobjectargs pulls the records from the datasource each time the user goes to add a new item. The issue is with Telerik you cannot change this behaviour of going to the datasource on the insert since. Soo. Having said that, is there a way change the selectobjectargs event to pull these items only when you import them and not when you go to insert?
///
<summary>
///
This gets called when a new grid item is added. It, in turn,
///
calls the save method below.
///
</summary>
///
protected void grdServices_ItemDataBound(object sender, GridItemEventArgs
e)
{
if (e.Item.GetType().Name == "GridDataItem"
)
{
GridDataItem item = e.Item as GridDataItem
;
CheckBox box = (CheckBox)item.FindControl("cbObserved"
);
object isChecked = null
;
if (item.OwnerTableView.DataMember == "MonthlyProgressReportServiceId"
)
{ isChecked = cbObservedChecked[item[
"MonthlyProgressReportServiceId"
].Text];
}
if (isChecked != null
)
{ box.Checked = (
bool)isChecked == true
;
}
int colDelete = this.grdServices.Columns.FindByUniqueName("Delete"
).OrderIndex;
int colObserved = this.grdServices.Columns.FindByUniqueName("Observed"
).OrderIndex;
int colDateNotified = this.grdServices.Columns.FindByUniqueName("DateNotified"
).OrderIndex;
MonthlyProgressReportService servicedata = ((MonthlyProgressReportService)((GridDataItem
)e.Item).DataItem);
if
(servicedata.WasImported)
{ ((
GridDataItem)e.Item).Controls[colDelete].Controls[0].Visible = false
;
Label lblNA = new Label
();
lblNA.Text =
"N/A"
;
((
GridDataItem
)e.Item).Controls[colDelete].Controls.Add(lblNA);
}
else
{
((
GridDataItem)e.Item).Controls[colDelete].Controls[0].Visible = true
;
}
bool
displayObservedControls = ((servicedata.IsAbstinenceMonitoring) && (!servicedata.WasMissed));
((
GridDataItem)e.Item).Controls[colObserved].FindControl("cbObserved"
).Visible = displayObservedControls;
((
GridDataItem)e.Item).Controls[colObserved].FindControl("Observed_NA"
).Visible = !displayObservedControls;
((
GridDataItem)e.Item).Controls[colDateNotified].FindControl("rdpDateNotified"
).Visible = displayObservedControls;
((
GridDataItem)e.Item).Controls[colDateNotified].FindControl("DateNotified_NA"
).Visible = !displayObservedControls;
if (item.OwnerTableView.DataMember == "MonthlyProgressReportServiceId"
)
{ isChecked = cbObservedChecked[item[
"MonthlyProgressReportServiceId"
].Text];
}
if (isChecked != null
)
{ box.Checked = (
bool)isChecked == true
;
}
//CheckBox chk = (CheckBox)sender;
//bool status = chk.Checked;
//GridDataItem item = (GridDataItem)chk.NamingContainer;
//string keyvalue = item.GetDataKeyValue("MonthlyProgressReportServiceId").ToString();
if
((servicedata.IsAbstinenceMonitoring) && (!servicedata.WasMissed))
{
RadDatePicker dtNotified = (RadDatePicker)((GridDataItem)e.Item).FindControl("rdpDateNotified"
);
dtNotified.MinDate =
DateTime
.Parse(servicedata.ServiceDate);
if (!string
.IsNullOrEmpty(servicedata.PositiveContactDate))
{ dtNotified.SelectedDate =
DateTime
.Parse(servicedata.PositiveContactDate);
} } }
else if (e.Item.GetType().Name == "GridEditFormInsertItem"
)
{
RadDatePicker dtNewDate = (RadDatePicker)e.Item.FindControl("rdpServiceDate"
);
RadComboBox rdpServiceCode = (RadComboBox)e.Item.FindControl("ddlServiceCode"
);
dtNewDate.MinDate =
new DateTime(Int32.Parse(progressReport.YearMonthReport.Substring(0, 4)), Int32
.Parse(progressReport.YearMonthReport.Substring(4, 2)), 1);
if
(dtNewDate.MinDate.Month >= 12)
dtNewDate.MaxDate =
new DateTime(Int32
.Parse(progressReport.YearMonthReport.Substring(0, 4)) + 1, 1, 1);
else
dtNewDate.MaxDate =
new DateTime(Int32.Parse(progressReport.YearMonthReport.Substring(0, 4)), Int32
.Parse(progressReport.YearMonthReport.Substring(4, 2)) + 1, 1);
dtNewDate.MaxDate = dtNewDate.MaxDate.Subtract(
new TimeSpan
(1, 0, 0, 0));
dtNewDate.Focus(); }
// grdServices.Rebind();
}
---------------here is the selectobject event
///
<summary>
///
return a list of Services which are attached to a monthly report
///
</summary>
protected void ServicesDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs
e)
---------------------the telerik RadGrid
<
telerik:RadGrid
EnableViewState="true"
ID="grdServices"
runat="server"
AllowSorting
="True"
DataSourceID="ServicesDataSource"
GridLines="None"
AutoGenerateColumns
="False"
OnItemDataBound="grdServices_ItemDataBound"
OnInsertCommand
="grdServices_OnInsert"
OnDeleteCommand="grdServices_OnDelete"
OnNeedDataSource
="grdServices_NeedDataSource">
<HeaderContextMenu
>
<CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation
>
</HeaderContextMenu
>
<MasterTableView
DataMember="servicesObserved"
EnableColumnsViewState="true"
DataKeyNames="MonthlyProgressReportServiceId"
CommandItemSettings-AddNewRecordText="Add a New Missed Service"
CommandItemDisplay
="Bottom"
>
<Columns
>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName
="EditCommandColumn"
Visible
="false">
<ItemStyle CssClass="MyImageButton"
/>
</telerik:GridEditCommandColumn
>
<telerik:GridCheckBoxColumn UniqueName="Imported" HeaderText="Imported" DataField
="WasImported"
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign
="Center">
</telerik:GridCheckBoxColumn
>
<telerik:GridBoundColumn UniqueName="ServiceDate" HeaderText="Date" SortExpression
="ServiceDate"
DataField
="ServiceDate">
</telerik:GridBoundColumn
>
<telerik:GridCheckBoxColumn UniqueName="Monitoring" HeaderText="Monitoring" DataField
="IsAbstinenceMonitoring"
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign
="Center">
</telerik:GridCheckBoxColumn
>
<telerik:GridDropDownColumn UniqueName="ServiceCode" HeaderText="Service Code" ListTextField
="Value"
ListValueField="Key" DataSourceID="ServiceCodeDataSource" DataField
="ServiceCodeChild.ServiceCodeId">
<ItemStyle Wrap="False"
/>
</telerik:GridDropDownColumn
>
<telerik:GridBoundColumn UniqueName="Units" HeaderText="# Units" SortExpression
="Units"
DataField="NumberOfUnits" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Center"
/>
<telerik:GridCheckBoxColumn UniqueName="Missed" HeaderText="Missed ?" DataField
="WasMissed"
ReadOnly="false" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign
="Center">
</telerik:GridCheckBoxColumn
>
<telerik:GridBoundColumn UniqueName="MonthlyProgressReportServiceId" ReadOnly="true" Display="false" DataField="MonthlyProgressReportServiceId"></telerik:GridBoundColumn
>
<telerik:GridTemplateColumn UniqueName="Observed" HeaderText="Observed ?" SortExpression
="Observed"
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center"
>
<ItemTemplate
>
<asp:CheckBox ID="cbObserved" runat="server"
EnableViewState="true" Checked='<%# Bind("WasObserved") %>' OnCheckedChanged
="cbObserved_CheckedChanged"/>
<asp:Label ID="Observed_NA" runat="server" Text="N/A"
/>
</ItemTemplate
>
</telerik:GridTemplateColumn
>
<telerik:GridTemplateColumn UniqueName="DateNotified" HeaderText
="Date Notified"
SortExpression
="DateNotified">
<ItemTemplate
>
<telerik:RadDatePicker ID="rdpDateNotified" runat="server" Culture
="English (United States)"
CssClass="displayField" MinDate
="1900-01-01">
<DateInput runat
="server">
</DateInput
>
<Calendar UseRowHeadersAsSelectors="False" runat="server" UseColumnHeadersAsSelectors
="False"
ViewSelectorText="x" ShowRowHeaders
="false">
</Calendar
>
<DatePopupButton ImageUrl="" HoverImageUrl=""></DatePopupButton
>
</telerik:RadDatePicker
>
<asp:Label ID="DateNotified_NA" runat="server" Text="N/A"
/>
</ItemTemplate
>
</telerik:GridTemplateColumn
>
<telerik:GridButtonColumn HeaderText="Remove from Report?" CommandName="Delete" Text
="Delete"
ConfirmText="Are you sure you want to delete this service?" UniqueName
="Delete"
ConfirmDialogType
="RadWindow">
</telerik:GridButtonColumn
>
</Columns
>
<EditFormSettings EditFormType="Template" CaptionFormatString
="Add Missed Service"
FormCaptionStyle-Font-Bold="true">
<FormStyle BackColor="#ECFED8"
/>
<FormTemplate
>
<table cellspacing="1" cellpadding="1" border="0" runat
="server">
<tr
>
<td
>
Service Date:
</td
>
<td
>
<telerik:RadDatePicker ID="rdpServiceDate" runat="server" Culture
="English (United States)"
CssClass="displayField" MinDate="1900-01-01" TabIndex
="1">
<DateInput ID="DateInput1" runat
="server">
</DateInput
>
<Calendar ID="Calendar1" UseRowHeadersAsSelectors="False" runat="server" UseColumnHeadersAsSelectors
="False"
ViewSelectorText="x" ShowRowHeaders
="false">
</Calendar
>
<DatePopupButton ImageUrl="" HoverImageUrl=""></DatePopupButton
>
</telerik:RadDatePicker
>
</span><span class="asterisk"> *</span
>
</td
>
</tr
>
<tr
>
<td
>
Service Code:
</td
>
<td
>
<telerik:RadComboBox ID="ddlServiceCode" Width="300px" runat="server" TabIndex
="2"
DataSourceID="NewServiceCodeDataSource" DataTextField="Value" DataValueField
="Key"
CssClass="displayField" MarkFirstMatch
="true">
</telerik:RadComboBox
>
<span class="asterisk"> *</span
>
</td
>
</tr
>
</table
>
<table style="width:
100%">
<tr
>
<td align="right" colspan
="2">
<asp:Button TabIndex="3" ID="btnInsertUpdate" Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>
'
runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>
'>
</asp:Button>
<asp:Button TabIndex="4" ID="btnCancel" Text="Cancel" runat="server" CausesValidation
="False"
CommandName="Cancel"></asp:Button
>
</td
>
</tr
>
</table
>
</FormTemplate
>
</EditFormSettings
>
</MasterTableView
>
</telerik:RadGrid
>
--------------the CSLA DATA SOURCE
<csla:CslaDataSource ID="ServicesDataSource" runat="server" TypeName="Beacon.Library.MonthlyProgressReports.ComplianceList, Beacon.Library" OnSelectObject="ServicesDataSource_SelectObject" TypeSupportsPaging="False" TypeSupportsSorting="False" TypeAssemblyName=""> </csla:CslaDataSource>
Thank you...
Copyright (c) Marimer LLC