help with SelectObjectArgs and Telerik RadGrid

help with SelectObjectArgs and Telerik RadGrid

Old forum URL: forums.lhotka.net/forums/t/8962.aspx


akm123 posted on Thursday, May 20, 2010

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">&nbsp*</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">&nbsp*</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>

&nbsp;

 

 

<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