<form id=
"form1"
runat=
"server"
>
<telerik:RadScriptManager ID=
"RadScriptManager1"
runat=
"server"
>
<Scripts>
<asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name=
"Telerik.Web.UI.Common.Core.js"
/>
<asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name=
"Telerik.Web.UI.Common.jQuery.js"
/>
<asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
</Scripts>
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID=
"RadAjaxManager1"
runat=
"server"
>
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID=
"timesheetView"
>
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID=
"timesheetView"
/>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadSkinManager ID=
"RadSkinManager1"
Runat=
"server"
Skin=
"WebBlue"
>
</telerik:RadSkinManager>
<telerik:RadAjaxLoadingPanel ID=
"RadAjaxLoadingPanel1"
runat=
"server"
Height=
"75px"
Transparency=
"25"
Width=
"75px"
>
<img alt=
"Loading..."
src=
'<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>'
style=
"border: 0px;"
/>
</telerik:RadAjaxLoadingPanel>
<telerik:RadCodeBlock ID=
"RadCodeBlock1"
runat=
"server"
>
<script type=
"text/javascript"
>
var hasChanges, inputs, dropdowns, editedRow;
function RowClick(sender, eventArgs) {
if (editedRow != null && hasChanges) {
if (confirm(
"Update changes?"
)) {
hasChanges = false;
$find(
"<%= timesheetView.MasterTableView.ClientID %>"
).updateItem(editedRow);
}
else {
hasChanges = false;
}
}
}
function RowDblClick(sender, eventArgs) {
if (editedRow && hasChanges) {
if (confirm(
"Update changes?"
)) {
hasChanges = false;
$find(
"<%= timesheetView.MasterTableView.ClientID %>"
).updateItem(editedRow);
}
else {
hasChanges = false;
}
}
editedRow = eventArgs.get_itemIndexHierarchical();
$find(
"<%= timesheetView.MasterTableView.ClientID %>"
).editItem(editedRow);
}
function GridCreated(sender, eventArgs)
{
var gridElement = sender.get_element();
var elementsToUse = [];
inputs = gridElement.getElementsByTagName(
"input"
);
for (var i = 0; i < inputs.length;i++)
{
var lowerType = inputs[i].type.toLowerCase();
if(lowerType ==
"hidden"
|| lowerType ==
"button"
)
{
continue;
}
var id = inputs[i].id;
// This filters only the date time pickers
if ((id.indexOf(
"dateInput_text"
) != -1) == true) {
Array.add(elementsToUse, inputs[i]);
inputs[i].onchange = TrackChanges;
hasChanges = true;
}
}
dropdowns = gridElement.getElementsByTagName(
"select"
);
for (var i = 0; i < dropdowns.length;i++)
{
dropdowns[i].onchange = TrackChanges;
}
setTimeout(function(){if(elementsToUse[0])elementsToUse[0].focus();},100);
}
function TrackChanges(e) {
hasChanges = true;
}
</script>
</telerik:RadCodeBlock>
<div>
<telerik:RadGrid Width=
"500px"
ID=
"timesheetView"
ShowStatusBar=
"True"
AllowSorting=
"True"
PageSize=
"7"
GridLines=
"None"
AllowPaging=
"True"
runat=
"server"
AutoGenerateColumns=
"false"
EnableAJAX=
"True"
EnableAJAXLoadingTemplate=
"True"
LoadingTemplateTransparency=
"25"
AllowAutomaticUpdates=
"true"
>
<MasterTableView AllowAutomaticUpdates=
"true"
EditMode=
"InPlace"
>
<Columns>
<telerik:GridBoundColumn UniqueName=
"EventDate"
DataField=
"EventDate"
HeaderText=
"Date"
ReadOnly
=
"True"
HeaderStyle-Width=
"25%"
/>
<telerik:GridBoundColumn UniqueName=
"Location"
DataField=
"Location"
HeaderText=
"Location"
ReadOnly
=
"True"
HeaderStyle-Width=
"25%"
/>
<telerik:GridDateTimeColumn PickerType=
"TimePicker"
UniqueName=
"InTime"
DataType=
"System.DateTime"
DataFormatString=
"{0:t}"
DataField=
"InTime"
HeaderText=
"In"
ReadOnly
=
"False"
HeaderStyle-Width=
"25%"
/>
<telerik:GridDateTimeColumn PickerType=
"TimePicker"
UniqueName=
"OutTime"
DataType=
"System.DateTime"
DataFormatString=
"{0:t}"
DataField=
"OutTime"
HeaderText=
"Out"
ReadOnly
=
"False"
HeaderStyle-Width=
"25%"
/>
</Columns>
</MasterTableView>
<ClientSettings>
<ClientEvents OnRowClick=
"RowClick"
OnRowDblClick=
"RowDblClick"
OnGridCreated=
"GridCreated"
/>
</ClientSettings>
</telerik:RadGrid>
</div>
</form>
Private
Sub
timesheetView_NeedDataSource(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridNeedDataSourceEventArgs)
Handles
timesheetView.NeedDataSource
Dim
Timesheet
As
New
Timesheet
Timesheet.AddEntry(
"OFFICE ADMIN"
, DateTime.Now.AddHours(-1), DateTime.Now.AddHours(2))
Timesheet.AddEntry(
"OFFICE XC"
, DateTime.Now.AddHours(-6), DateTime.Now.AddHours(3))
Timesheet.AddEntry(
"OFFICE 9"
, DateTime.Now.AddHours(-4), DateTime.Now.AddHours(9))
Timesheet.AddEntry(
"OFFICE 8"
, DateTime.Now.AddHours(-2), DateTime.Now.AddHours(7))
timesheetView.DataSource = Timesheet.List
End
Sub
.Scrollgrid
{
position: static;
OVERFLOW: scroll; border:2px; border-style:solid;
}
.panelStyle
{
width:100%;
}
<
asp:Panel
runat
=
"server"
ID
=
"pnlOverview"
CssClass
=
"panelStyle"
>
<
table
width
=
"100%"
>
<
tr
align
=
"center"
>
<
td
>
<
div
class
=
"Scrollgrid"
style
=
"width: 1100px; height: 600px;"
>
<
telerik:RadGrid
ID
=
"RadGridAllRequests"
runat
=
"server"
AllowPaging
=
"true"
AllowSorting
=
"true"
AllowFilteringByColumn
=
"true"
AutoGenerateColumns
=
"False"
GridLines
=
"Both"
OnNeedDataSource
=
"RadGridAllRequests_needdatasource"
OnItemDataBound
=
"RadGridAllRequests_ItemDataBound"
OnItemCreated
=
"RadGridAllRequests_ItemCreated"
OnItemCommand
=
"RadGridAllRequests_ItemCommand"
AllowMultiRowSelection
=
"true"
SelectedItemStyle-CssClass
=
"SelectedItem"
Width
=
"100%"
Skin
=
"WebBlue"
>
<
PagerStyle
Mode
=
"NextPrevNumericAndAdvanced"
Position
=
"TopAndBottom"
AlwaysVisible
=
"true"
/>
<
ClientSettings
EnableRowHoverStyle
=
"true"
EnablePostBackOnRowClick
=
"true"
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
ShowHeadersWhenNoRecords
=
"true"
AllowFilteringByColumn
=
"true"
DataKeyNames
=
"RequestInfoID"
>
<
Columns
>
<!-- I am displaying about 15 columns here -->
</
Columns
>
<
EditFormSettings
>
<
PopUpSettings
ScrollBars
=
"None"
/>
</
EditFormSettings
>
<
ExpandCollapseColumn
Resizable
=
"False"
Visible
=
"False"
>
<
HeaderStyle
/>
</
ExpandCollapseColumn
>
<
RowIndicatorColumn
Visible
=
"False"
>
<
HeaderStyle
/>
</
RowIndicatorColumn
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
</
td
>
</
tr
>
</
table
>
</
asp:Panel
>
<
div
class
=
"Scrollgrid"
style
=
"width: 1100px; height: 600px;"
>
<
telerik:RadGrid
ID
=
"RadGridAllRequests"
runat
=
"server"
AllowPaging
=
"true"
AllowSorting
=
"true"
AllowFilteringByColumn
=
"true"
AutoGenerateColumns
=
"False"
GridLines
=
"Both"
OnNeedDataSource
=
"RadGridAllRequests_needdatasource"
OnItemDataBound
=
"RadGridAllRequests_ItemDataBound"
OnItemCreated
=
"RadGridAllRequests_ItemCreated"
OnItemCommand
=
"RadGridAllRequests_ItemCommand"
AllowMultiRowSelection
=
"true"
SelectedItemStyle-CssClass
=
"SelectedItem"
Width
=
"100%"
Skin
=
"WebBlue"
>
<
PagerStyle
Mode
=
"NextPrevNumericAndAdvanced"
Position
=
"TopAndBottom"
AlwaysVisible
=
"true"
/>
<
ClientSettings
EnableRowHoverStyle
=
"true"
EnablePostBackOnRowClick
=
"true"
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
ShowHeadersWhenNoRecords
=
"true"
AllowFilteringByColumn
=
"true"
DataKeyNames
=
"RequestInfoID"
>
<
Columns
>
<
telerik:GridNumericColumn
DataField
=
"RequestInfoID"
HeaderText
=
"Request No."
SortExpression
=
"RequestInfoID"
DataType
=
"System.Int64"
FilterControlWidth
=
"40px"
HeaderStyle-Width
=
"100px"
>
</
telerik:GridNumericColumn
>
<
telerik:GridDateTimeColumn
HeaderStyle-Width
=
"130px"
DataField
=
"CreationDate"
HeaderText
=
"Created On"
FilterControlWidth
=
"100px"
CurrentFilterFunction
=
"Contains"
PickerType
=
"DatePicker"
DataFormatString
=
"{0:MM/dd/yyyy}"
SortExpression
=
"CreationDate"
>
</
telerik:GridDateTimeColumn
>
<
telerik:GridNumericColumn
DataField
=
"TotalAmount"
HeaderText
=
"Total Amount"
SortExpression
=
"TotalAmount"
HeaderStyle-HorizontalAlign
=
"Right"
ItemStyle-HorizontalAlign
=
"Right"
DataType
=
"System.Decimal"
FilterControlWidth
=
"70px"
DataFormatString
=
"{0:#,##0.00}"
>
<
FooterStyle
Font-Bold
=
"true"
/>
</
telerik:GridNumericColumn
>
<
telerik:GridBoundColumn
DataField
=
"RequestedFrom_Email"
HeaderText
=
"Requested From"
SortExpression
=
"RequestedFrom_Email"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Describe Reason and Reject"
UniqueName
=
"rejectrequest"
AllowFiltering
=
"false"
HeaderStyle-Width
=
"240px"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblNextApprovalRequiredFor"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "NextApprovalRequiredFor").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblUnder5000ApprovedORRejected"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "Under5000ApprovedORRejected").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblOver5000ApprovedORRejected"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "Over5000ApprovedORRejected").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblFinanceApprovedORRejected"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "FinanceApprovedORRejected").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblOver25000CFOApprovedORRejected"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "Over25000CFOApprovedORRejected").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblOver25000COOApprovedORRejected"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "Over25000COOApprovedORRejected").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblOver25000CEOApprovedORRejected"
runat
=
"server"
Visible
=
"false"
Text='<%#Eval ( "Over25000CEOApprovedORRejected").ToString()%>'></
asp:Label
>
<
asp:Label
ID
=
"lblRejectedMessage"
runat
=
"server"
Text
=
"Rejected"
></
asp:Label
>
<
asp:TextBox
Width
=
"150px"
runat
=
"server"
MaxLength
=
"150"
ValidationGroup
=
"vgRejection"
ID
=
"txtRejectionReason"
ToolTip
=
"Enter Rejection Reason"
></
asp:TextBox
>
<%-- <
asp:RequiredFieldValidator
ID
=
"rvRejectionReason"
Display
=
"Dynamic"
ValidationGroup
=
"vgRejection"
runat
=
"server"
SetFocusOnError
=
"true"
ControlToValidate
=
"txtRejectionReason"
ErrorMessage
=
"Enter Rejection Reason"
ToolTip
=
"Enter Rejection Reason"
>
</
asp:RequiredFieldValidator
>
--%>
<
asp:Button
CssClass
=
"ButtonCSS"
runat
=
"server"
ID
=
"btnRejectRequest"
Text
=
"Reject"
ToolTip
=
"Click here to Reject Request"
CausesValidation
=
"true"
ValidationGroup
=
"vgRejection"
OnClick
=
"btnRejectRequest_Click"
OnClientClick
=
"javascript:var agree= confirm('Are you sure you want to reject this Request? '); if(agree){ Page_BlockSubmit = false;buttonClicked_WithObj(this); return true; };else {return false;};"
CommandArgument='<%#
Eval ( "RequestInfoID").ToString()
+ ";" +
Eval ( "NextApprovalRequiredFor").ToString()
+ ";" +
Eval ( "TotalAmount").ToString()
%>' />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"Request_Current_Status_DisplayText"
HeaderText
=
"Current Status"
SortExpression
=
"Request_Current_Status_DisplayText"
UniqueName
=
"Request_Current_Status_DisplayText"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Request No."
SortExpression
=
"RequestInfoID"
AllowFiltering
=
"false"
Visible
=
"false"
UniqueName
=
"requestinfoid"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblRequestInfoID"
runat
=
"server"
Text='<%# DataBinder.Eval(Container.DataItem, "RequestInfoID")%>'></
asp:Label
></
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
EditFormSettings
>
<
PopUpSettings
ScrollBars
=
"None"
/>
</
EditFormSettings
>
<
ExpandCollapseColumn
Resizable
=
"False"
Visible
=
"False"
>
<
HeaderStyle
/>
</
ExpandCollapseColumn
>
<
RowIndicatorColumn
Visible
=
"False"
>
<
HeaderStyle
/>
</
RowIndicatorColumn
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
<
tr
>
<
td
colspan
=
"2"
class
=
"t12_BlackBold"
><
div
align
=
"right"
>
Country: <
span
class
=
"t12_red"
>*</
span
>
</
div
></
td
>
<
td
class
=
"style1"
><
div
align
=
"left"
>
<
telerik:RadComboBox
ID
=
"frm_sCountry_cd"
Runat
=
"server"
DataTextField
=
"sCountry"
DataValueField
=
"sCountry_cd"
ErrorMessage
=
"Required field."
Skin
=
"Outlook"
Width
=
"180px"
DropDownWidth
=
"240px"
MaxHeight
=
"300px"
onclientselectedindexchanged
=
"LoadStates"
OnItemsRequested
=
"frm_sCountry_cd_ItemsRequested"
>
</
telerik:RadComboBox
><
asp:CompareValidator
ID
=
"sCountry_cd_VD"
runat
=
"server"
ValueToCompare
=
"-Select a Country-"
Operator
=
"NotEqual"
ControlToValidate
=
"frm_sCountry_cd"
CssClass
=
"KT_field_error"
Font-Bold
=
"True"
Display
=
"Dynamic"
ErrorMessage="<br />You must select a country."/>
</
div
></
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
class
=
"t12_BlackBold"
><
div
align
=
"right"
>
State/Region: <
span
class
=
"t12_red"
>*</
span
>
</
div
></
td
>
<
td
class
=
"style1"
><
div
align
=
"left"
>
<
telerik:RadComboBox
ID
=
"frm_sState"
Runat
=
"server"
DataTextField
=
"sStateDesc"
DataValueField
=
"sState"
EmptyMessage
=
"-Select State-"
ErrorMessage
=
"Required field."
Skin
=
"Outlook"
Width
=
"180px"
MaxHeight
=
"300px"
DropDownWidth
=
"200px"
OnClientItemsRequested
=
"ItemsLoaded"
OnItemsRequested
=
"frm_sState_ItemsRequested"
>
</
telerik:RadComboBox
><
asp:CompareValidator
ID
=
"sState_VD"
runat
=
"server"
ValueToCompare
=
"-Select State/Region-"
Operator
=
"NotEqual"
ControlToValidate
=
"frm_sCountry_cd"
CssClass
=
"KT_field_error"
Font-Bold
=
"True"
Display
=
"Dynamic"
ErrorMessage="<br />You must select a state/region."/>
</
div
></
td
>
</
tr
>
.
.
.
.
<
script
type
=
"text/javascript"
>
//global variables for the countries and cities comboboxes
var sStatesCombo;
function pageLoad()
{
// initialize the global variables
// in this event all client objects
// are already created and initialized
sStatesCombo = $find("<%= frm_sState.ClientID%>");
function LoadStates(combo, eventArqs)
{
var item = eventArqs.get_item();
sStatesCombo.set_text("Loading...");
// if a continent is selected
if (item.get_index() > 0)
{
// this will fire the ItemsRequested event of the
// countries combobox passing the sCountry_id as a parameter
if (sStatesCombo.get_visible == false )
{
sStatesCombo.set_visible(true);
}
sStatesCombo.clearItems();
sStatesCombo.requestItems(item.get_value(), false);
sStatesCombo.commitChanges();
items = sStatesCombo.get_items();
if (items.get_count() == 0)
{
sStatesCombo.set_text("-Select State/Region-");
}
else
{
sStatesCombo.clearItems();
}
}
else
{
// the -Select a continent- item was chosen
sStatesCombo.set_text("-Select Country first-");
sStatesCombo.clearItems();
}
}
function ItemsLoaded(combo, eventArqs) {
if (combo.get_items().get_count() > 0) {
// pre-select the first item
combo.set_text(combo.get_items().getItem(0).get_text());
combo.get_items().getItem(0).highlight();
}
combo.showDropDown();
}
</
script
>
'Code used in updating the values
...
'Setup Country and state drop downs
LoadCountries()
frm_sCountry_cd.SelectedValue = sCountry_cd
LoadStates(sCountry_cd)
If sState <> "" Then frm_sState.SelectedValue = sState
...
Protected Sub LoadCountries()
Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("AAU_StoreCS").ConnectionString)
Dim adapter As New SqlDataAdapter("SELECT Value AS sCountry_cd, Text AS sCountry, EntryID AS ParentID, 0 as sOrder FROM Mstr_Lists WHERE (ListName = 'Country') AND (Value = 'US') UNION SELECT Value AS sCountry_cd, Text AS sCountry, EntryID AS ParentID, 1 as sOrder FROM Mstr_Lists AS Mstr_Lists_1 WHERE (ListName = 'Country') Order by sOrder, sCountry", connection)
Dim dt As New DataTable()
adapter.Fill(dt)
frm_sCountry_cd.DataTextField = "sCountry"
frm_sCountry_cd.DataValueField = "sCountry_cd"
frm_sCountry_cd.DataSource = dt
frm_sCountry_cd.DataBind()
'insert the first item
frm_sCountry_cd.Items.Insert(0, New RadComboBoxItem("-Select a Country-"))
End Sub
Protected Sub LoadStates(ByVal sCountry_cd As String)
Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("AAU_StoreCS").ConnectionString)
'Select states/regions based on the sCountry_cd
Dim adapter As New SqlDataAdapter("SELECT Value AS sState, Text AS sStateDesc, ParentID FROM Mstr_Lists WHERE (ListName = 'Region') AND (ParentID = (SELECT EntryID FROM Mstr_Lists AS Mstr_Lists_1 WHERE (ListName = 'Country') AND (Value = @Country_cd))) ORDER BY sStateDesc", connection)
adapter.SelectCommand.Parameters.AddWithValue("@Country_cd", sCountry_cd)
Dim dt As New DataTable()
adapter.Fill(dt)
frm_sState.DataTextField = "sStateDesc"
frm_sState.DataValueField = "sState"
frm_sState.DataSource = dt
frm_sState.DataBind()
If Not frm_sState.IsEmpty Then
frm_sState.Visible = True
'sStateTxt.Visible = False
'insert the first item
If sCountry_cd = "US" Then
frm_sState.Items.Insert(0, New RadComboBoxItem("-Select State-"))
Else
frm_sState.Items.Insert(0, New RadComboBoxItem("-Select State/Region-"))
End If
Else
'frm_sState.Visible = False
'sStateTxt.Visible = True
End If
End Sub
'Code used to read values during post back.
...
Dim sState As String = Left(Replace(frm_sState.SelectedValue.ToString(), "'", "''"), 20)
Dim sCountry_cd As String = Left(Replace(frm_sCountry_cd.SelectedValue.ToString, "'", ""), 2)
...
For
i As Integer = 0 To RadGrid1.Items.Count - 1
If Service_Reports_Table(i)("Status") = "Newly Submitted" Then
RadGrid1.Items.Item(i).BackColor = Drawing.Color.Wheat
ElseIf Service_Reports_Table(i)("Status") = "Entered" Then
RadGrid1.Items.Item(i).BackColor = Drawing.Color.Thistle
End If
Next
That code right above appears in both the page load and the needdatasource events.
When a user applies a filter or clicks on the edit, update, cancel commands, the colors disappear until a postback occurs.
Can something be done so that the "Code for the colors" execute when those commands are fired?
I ran my page through the validator at http://validator.w3.org/, and it told me: Line 467, Column 144: there is no attribute "disabled"
The link it's referring to is inside my grid:
<
div
id
=
"ctl00_cphMain_grdSchedule_ctl00_ctl06_Detail10_ctl06_Detail10_ctl04_ttpScheduleItem"
disabled
=
"disabled"
style
=
"display:none;position:absolute;"
>
???