or
<form id="form1" runat="server"> |
<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> |
</telerik:RadScriptManager> |
<telerik:RadCodeBlock runat="server"> |
<script type="text/javascript"> |
function RowDblClick(sender, eventArgs) { |
sender.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical()); |
} |
function onRequestStart(sender, args) { |
if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 || |
args.get_eventTarget().indexOf("ExportToWordButton") >= 0 || |
args.get_eventTarget().indexOf("ExportToPdfButton") >= 0 || |
args.get_eventTarget().indexOf("ExportToCsvButton") >= 0) { |
args.set_enableAjax(false); |
} |
} |
</script> |
</telerik:RadCodeBlock> |
<div> |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
<ClientEvents OnRequestStart="onRequestStart" /> |
</telerik:RadAjaxManager> |
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default"> |
</telerik:RadAjaxLoadingPanel> |
<div align=center> |
<asp:Label ID="Label1" runat="server" |
Text="Qwest Tele Sales Crossmedia Report Tool" Font-Bold="True" |
Font-Italic="True" Font-Size="XX-Large"></asp:Label> |
<p /> |
</div> |
<telerik:RadGrid ID="RadGrid1" runat="server" AllowAutomaticUpdates="True" |
AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" DataSourceID="SqlDataSource1" |
GridLines="None" EnableLinqExpressions="False" |
OnItemCommand="RadGrid1_ItemCommand" |
onexcelmlexportrowcreated="RadGrid1_ExcelMLExportRowCreated" |
onexcelmlexportstylescreated="RadGrid1_ExcelMLExportStylesCreated" |
onitemcreated="RadGrid1_ItemCreated"> |
<MasterTableView AutoGenerateColumns="False" DataKeyNames="ID" |
DataSourceID="SqlDataSource1" EditMode="PopUp"> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</RowIndicatorColumn> |
<ExpandCollapseColumn> |
<HeaderStyle Width="20px"></HeaderStyle> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridEditCommandColumn> |
</telerik:GridEditCommandColumn> |
<telerik:GridBoundColumn DataField="ID" DataType="System.Int64" HeaderText="ID" ReadOnly="True" |
SortExpression="ID" UniqueName="ID" HeaderStyle-Width="110px"> |
<FilterTemplate> |
Clear filters |
<asp:ImageButton ID="btnShowAll" runat="server" ImageUrl="Img/filterCancel.gif" OnClick="btnShowAll_Click" |
Style="vertical-align: middle" /> |
</FilterTemplate> |
<HeaderStyle Width="110px"></HeaderStyle> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="SID" DataType="System.Int64" HeaderText="SID" ReadOnly="true" ForceExtractValue="InEditMode" |
SortExpression="SID" UniqueName="SID"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Username" HeaderText="Username" SortExpression="Username" ReadOnly="true" ForceExtractValue="InEditMode" |
UniqueName="Username"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="First" HeaderText="First" SortExpression="First" ReadOnly="true" ForceExtractValue="InEditMode" |
UniqueName="First"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Last" HeaderText="Last" SortExpression="Last" ReadOnly="true" ForceExtractValue="InEditMode" |
UniqueName="Last"> |
</telerik:GridBoundColumn> |
<telerik:GridCheckBoxColumn DataField="EngPostcard" DataType="System.Boolean" HeaderText="EngPostcard" |
SortExpression="EngPostcard" UniqueName="EngPostcard"> |
</telerik:GridCheckBoxColumn> |
<telerik:GridCheckBoxColumn DataField="EngEmail" DataType="System.Boolean" HeaderText="EngEmail" |
SortExpression="EngEmail" UniqueName="EngEmail"> |
</telerik:GridCheckBoxColumn> |
<telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" |
UniqueName="Name"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Speed" HeaderText="Speed" SortExpression="Speed" |
UniqueName="Speed"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Email" HeaderText="Email" SortExpression="Email" |
UniqueName="Email"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Address1" HeaderText="Address1" SortExpression="Address1" |
UniqueName="Address1"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Address2" HeaderText="Address2" SortExpression="Address2" |
UniqueName="Address2"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="City" HeaderText="City" SortExpression="City" |
UniqueName="City"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="State" HeaderText="State" SortExpression="State" |
UniqueName="State"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="Zip" HeaderText="Zip" SortExpression="Zip" UniqueName="Zip"> |
</telerik:GridBoundColumn> |
<telerik:GridDateTimeColumn DataField="DateVisited" DataType="System.DateTime" HeaderText="DateVisited" |
SortExpression="DateVisited" UniqueName="DateVisited"> |
</telerik:GridDateTimeColumn> |
<telerik:GridBoundColumn DataField="DateRegistered" DataType="System.DateTime" HeaderText="DateRegistered" |
SortExpression="DateRegistered" UniqueName="DateRegistered" > |
<FilterTemplate> |
From |
<telerik:RadDatePicker ID="FromDateRegisteredPicker" runat="server" Width="85px" |
ClientEvents-OnDateSelected="FromDateRegisteredSelected" MinDate="06-01-2010" |
MaxDate="01-01-2020" FocusedDate="07-04-2010" DbSelectedDate='<%# startDate %>' /> |
to |
<telerik:RadDatePicker ID="ToDateRegisteredPicker" runat="server" Width="85px" ClientEvents-OnDateSelected="ToDateRegisteredSelected" |
MinDate="06-01-2010" MaxDate="01-01-2020" FocusedDate="08-08-2010" DbSelectedDate='<%# endDate %>' /> |
<telerik:RadScriptBlock runat="server" ID="RadScriptBlock1"> |
<script type="text/javascript"> |
function FromDateRegisteredSelected(sender, args) { |
var tableView = $find("<%#((GridItem)Container).OwnerTableView.ClientID %>"); |
var ToDateRegisteredPicker = $find('<%#((GridItem)Container).FindControl("ToDateRegisteredPicker").ClientID %>'); |
var fromDateRegistered = FormatSelectedDate(sender); |
var toDateRegistered = FormatSelectedDate(ToDateRegisteredPicker); |
tableView.filter("DateRegistered", fromDateRegistered + " " + toDateRegistered, "Between"); |
} |
function ToDateRegisteredSelected(sender, args) { |
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>"); |
var fromDateRegisteredPicker = $find('<%# ((GridItem)Container).FindControl("FromDateRegisteredPicker").ClientID %>'); |
var fromDateRegistered = FormatSelectedDate(fromDateRegisteredPicker); |
var toDateRegistered = FormatSelectedDate(sender); |
tableView.filter("DateRegistered", fromDateRegistered + " " + toDateRegistered, "Between"); |
} |
function FormatSelectedDate(picker) { |
var date = picker.get_selectedDate(); |
var dateInput = picker.get_dateInput(); |
var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat()); |
return formattedDate; |
} |
</script> |
</telerik:RadScriptBlock> |
</FilterTemplate> |
</telerik:GridBoundColumn> |
<telerik:GridCheckBoxColumn DataField="Optout" DataType="System.Boolean" HeaderText="Optout" |
SortExpression="Optout" UniqueName="Optout"> |
</telerik:GridCheckBoxColumn> |
</Columns> |
<EditFormSettings> |
<EditColumn UniqueName="EditCommandColumn1"></EditColumn> |
</EditFormSettings> |
</MasterTableView> |
<ClientSettings> |
<ClientEvents OnRowDblClick="RowDblClick" /> |
</ClientSettings> |
</telerik:RadGrid> |
</div> |
<div class="module" style="height: 110px; width: 92%"> |
<asp:CheckBox ID="CheckBox1" Text="Export only data" runat="server"></asp:CheckBox> |
<br /> |
<asp:CheckBox ID="CheckBox2" Text="Ignore paging (exports all pages)" runat="server"></asp:CheckBox> |
<br /> |
<asp:CheckBox ID="CheckBox3" Text="Open exported data in new browser window" runat="server"></asp:CheckBox> |
<br /> |
<br /> |
<asp:Button ID="Button1" Width="150px" Text="Export to Excel" OnClick="Button1_Click" |
runat="server"></asp:Button> |
<asp:Button ID="Button4" Width="150px" Text="Export to ExcelML" OnClick="Button4_Click" |
runat="server"></asp:Button> |
<asp:Button ID="Button2" Width="150px" Text="Export to Word" OnClick="Button2_Click" |
runat="server"></asp:Button> |
<asp:Button ID="Button3" Width="150px" Text="Export to CSV" OnClick="Button3_Click" |
runat="server"></asp:Button> |
</div> |
<br /> |
</form> |
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"false"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
AllowSorting
=
"True"
AllowFilteringByColumn
=
"True"
AllowPaging
=
"True"
>
<
MasterTableView
CommandItemDisplay
=
"Bottom"
>
<
Columns
>
.
.
.
<
Columns
>
<
CommandItemTemplate
>
<
table
id
=
"tblCommand"
><
tr
><
td
>
<
div
style
=
"height: 30px; line-height: 30px; position: relative; float: left; padding-left: 5px;"
>
<
asp:LinkButton
ID
=
"lnkInsert"
runat
=
"server"
CommandName
=
"InitInsert"
><
img
style
=
"border:0px"
alt
=
""
src
=
"/App_Images/Add.png"
/> Add new record</
asp:LinkButton
>
</
div
>
<
div
style
=
"height: 30px; line-height: 30px; position: relative; float: left; padding-left: 15px;"
>
<
asp:LinkButton
ID
=
"lnkDelete"
runat
=
"server"
CommandName
=
"Delete"
><
img
style
=
"border:0px"
alt
=
""
src
=
"/App_Images/Delete.png"
/> Delete record(s)</
asp:LinkButton
>
</
div
>
</
td
><
td
>
<
div
style
=
"height: 30px; text-align: right; position: relative; float: right;"
>
<
asp:Image
ID
=
"imgCancelChanges"
runat
=
"server"
ImageUrl
=
"/App_Images/cancel.gif"
AlternateText
=
"Cancel changes"
ToolTip
=
"Cancel changes"
Height
=
"24px"
Style="cursor: pointer;
margin: 2px 5px 0px 0px;"
onclick
=
"CancelChanges();"
/>
<
asp:Image
ID
=
"imgProcessChanges"
runat
=
"server"
ImageUrl
=
"/App_Images/ok.gif"
AlternateText
=
"Process changes"
ToolTip
=
"Process changes"
Height
=
"24px"
Style="cursor: pointer;
margin: 2px 5px 0px 0px;"
onclick
=
"ProcessChanges();"
/>
</
div
>
</
td
></
tr
>
</
table
>
</
CommandItemTemplate
>
<
PagerStyle
AlwaysVisible
=
"true"
/>
</
MasterTableView
>
<
ClientSettings
>
<
ClientEvents
OnGridCreated
=
"GridCreated"
/>
<
Scrolling
AllowScroll
=
"true"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
jQuery(document).ready(function ($) {
$('#tblCommand').width(cphContent_ctl00$cphContent$RadGrid1Panel.offsetWidth);
});
function GridCreated(sender, args) {
var scrollArea = sender.GridDataDiv;
var dataHeight = sender.get_masterTableView().get_element().clientHeight;
if (dataHeight <
350
) {
scrollArea.style.height
=
dataHeight
+ 18 + "px";
}
}
</script>
</
telerik:RadCodeBlock
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
telerik:RadScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
EnableTheming
=
"True"
>
</
telerik:RadScriptManager
>
<
telerik:radgrid
id
=
"RadGrid1"
runat
=
"server"
onneeddatasource
=
"RadGrid1_NeedDataSource"
enableajax
=
"true"
autogenerateeditcolumn
=
"True"
showgrouppanel
=
"True"
width
=
"99%"
allowpaging
=
"True"
allowautomaticupdates
=
"true"
allowsorting
=
"True"
allowmultirowselection
=
"True"
height
=
"100%"
skin
=
"Vista"
onitemupdated
=
"RadGrid1_ItemUpdated"
onupdatecommand
=
"RadGrid1_UpdateCommand"
>
<
ClientSettings
AllowDragToGroup
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
AllowKeyboardNavigation
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
/>
<
ClientEvents
OnGridCreated
=
"ResizeEvent"
/>
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
FrozenColumnsCount
=
"3"
/>
<
Resizing
ResizeGridOnColumnResize
=
"True"
AllowColumnResize
=
"True"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
Width
=
"99%"
GridLines
=
"Both"
AllowAutomaticUpdates
=
"True"
AutoGenerateColumns
=
"False"
>
<
ExpandCollapseColumn
>
<
HeaderStyle
Width
=
"20px"
/>
</
ExpandCollapseColumn
>
<
EditFormSettings
ColumnNumber
=
"3"
>
<
EditColumn
ButtonType
=
"PushButton"
UniqueName
=
"EditCommandColumn1"
>
</
EditColumn
>
</
EditFormSettings
>
<
PagerStyle
AlwaysVisible
=
"True"
/>
<
HeaderStyle
Wrap
=
"False"
/>
</
MasterTableView
>
</
telerik:radgrid
>
</
div
>
</
form
>
GridTest =
public
partial
class
(TBasePage)
private
FGridHelper: TGridHelper;
method GetDataGrid: RadGrid;
protected
method Page_Load(sender: Object; e: EventArgs);
method RadGrid1_NeedDataSource(source: System
.
Object; e: Telerik
.
Web
.
UI
.
GridNeedDataSourceEventArgs);
method RadGrid1_UpdateCommand(sender: Object; e: Telerik
.
Web
.
UI
.
GridCommandEventArgs);
method RadGrid1_ItemUpdated(source: System
.
Object; e: Telerik
.
Web
.
UI
.
GridUpdatedEventArgs);
property
grdData: RadGrid read GetDataGrid;
end
;
implementation
method GridTest
.
GetDataGrid: RadGrid;
begin
Result := RadGrid1;
end
;
method GridTest
.
Page_Load(sender: Object; e: EventArgs);
begin
FGridHelper := new TGridHelper(EasyIPConnection, grdData, Session);
end
;
method GridTest
.
RadGrid1_ItemUpdated(source: System
.
Object; e: Telerik
.
Web
.
UI
.
GridUpdatedEventArgs);
begin
FGridHelper
.
UpdateCommand(source, e);
end
;
method GridTest
.
RadGrid1_UpdateCommand(sender: Object; e: Telerik
.
Web
.
UI
.
GridCommandEventArgs);
var
editedItem : GridEditableItem;
PlantID,PlantName,updateQuery : String;
NewValues: Hashtable;
begin
editedItem := e
.
Item
as
GridEditableItem;
var
editMan : GridEditManager;
editMan := editedItem
.
EditManager;
//for each column:GridColumn in e.Item.OwnerTableView.RenderColumns do
//begin
//if (column is IGridEditableColumn) then
//begin
//var str : String;
//str := "abc";
//end;
//end;
//
//var txt := new TextBox;
NewValues := new Hashtable;
e
.
Item
.
OwnerTableView
.
ExtractValuesFromItem(NewValues, editedItem);
end
;
method GridTest
.
RadGrid1_NeedDataSource(source: System
.
Object; e: Telerik
.
Web
.
UI
.
GridNeedDataSourceEventArgs);
var
SubnetData : DataTable;
begin
//if Boolean(Session['LoggedIn']) then
//FGridHelper.OpenGrid(FTreeHelper.GetNodeData(tvSubnets.SelectedNode).NodeType,
//FTreeHelper.GetNodeData(tvSubnets.SelectedNode).AutonomousNetworkId,
//FTreeHelper.GetNodeData(tvSubnets.SelectedNode).SubnetId);
// When we require to pass field id than we have to use this method and remove comment.
// FGridHelper.OpenGrid(RadTextBox2.Text.Trim,hdnSearchText.Value.ToUpper,getUserTableID(hdnSearchText.Value.ToUpper),GetOption(hdnSearchMethod.Value),GetFieldId(hdnFieldList.Value.ToString()));
// Bind grid for right side search
//FGridHelper.OpenGrid( ("","SUBNET","SUBNET","",nil);
FGridHelper
.
OpenGrid("","ADDRESSES",
2
,EasyIPLibrary_Intf
.
TSearchOption
.
soContains,
nil
)
end
;
TGridHelper =
public
class
private
FGridView: RadGrid;
FEasyIPConnection: TClientConnection;
FTableType: TTableType;
FDataset: DataSet;
FDatatable: DataTable;
FSession: HttpSessionState;
method FGridView_UpdateCommand(source: Object; e: GridCommandEventArgs);
procedure
DeleteCommand(source: System
.
Object; e: GridCommandEventArgs);
method FGridView_DeleteCommand(source: Object; e: GridCommandEventArgs);
method ItemDataBound(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridItemEventArgs);
function
AddNewColumn(FieldName, HeaderText: String; IsReadOnly: Boolean): GridBoundColumn;
method CreateColumnEditor(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridCreateColumnEditorEventArgs);
method ItemCreated(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridItemEventArgs);
method ItemCommand(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridCommandEventArgs);
method UpdateCommand(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridCommandEventArgs);
method ItemUpdated(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridUpdatedEventArgs);
property
Session: HttpSessionState read FSession;
protected
public
constructor
(EasyIPConnection: TClientConnection; Grid: RadGrid; ASession: HttpSessionState);
method OpenGrid(NodeType: TNodeType; AutonomousNetworkId, SubnetId: Int64);
method OpenGrid(
const
SearchText: String;
const
TableName: String; TableId: Int64; SearchOption: TSearchOption; FieldIds: Array
of
System
.
Int64);
method OpenGrid(
const
TableName: String);
method OpenGrid;
method UpdateCommand(source: System
.
Object; e: Telerik
.
Web
.
UI
.
GridUpdatedEventArgs);
method CloseGrid;
end
;
implementation
const
ImageInfoField =
'_IMAGE_INFO_FIELD_'
;
constructor
TGridHelper(EasyIPConnection: TClientConnection; Grid: RadGrid; ASession: HttpSessionState);
begin
FEasyIPConnection := EasyIPConnection;
FSession := ASession;
FGridView := Grid;
FGridView
.
ItemDataBound += @ItemDataBound;
FGridView
.
ItemUpdated += @UpdateCommand;
FGridView
.
DeleteCommand += @DeleteCommand;
FGridView
.
CreateColumnEditor += @CreateColumnEditor;
FGridView
.
ItemCommand += @ItemCommand;
FGridView
.
UpdateCommand += @UpdateCommand;
end
;
function
TGridHelper
.
AddNewColumn(FieldName, HeaderText: String; IsReadOnly: Boolean): GridBoundColumn;
begin
Result := new GridBoundColumn;
Result
.
ReadOnly := IsReadOnly;
Result
.
HeaderText := HeaderText;
Result
.
DataField := FieldName;
Result
.
HeaderStyle
.
Wrap := FALSE;
Result
.
ItemStyle
.
Wrap := FALSE;
Result
.
UniqueName := FieldName;
if
HeaderText =
'Subnet icon'
then
begin
Result
.
HeaderText := "";
Result
.
HeaderStyle
.
Width :=
30
;
Result
.
ItemStyle
.
HorizontalAlign := Result
.
ItemStyle
.
HorizontalAlign
.
Center;
Result
.
Resizable :=
false
;
Result
.
Reorderable :=
false
;
end
else
Result
.
HeaderStyle
.
Width :=
350
;
FGridView
.
MasterTableView
.
Columns
.
Add(Result);
end
;
method TGridHelper
.
ItemDataBound(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridItemEventArgs);
var
AGridItem: GridDataItem;
AValue: String;
NormalImageURL, SelectedImageURL: String;
i: Integer;
UserField: TUserField;
LookupItem: TUserFieldLookup;
Column: GridBoundColumn;
ImageInfos: TStringList;
begin
if
e
.
Item
is
GridDataItem
then
begin
AGridItem := GridDataItem(e
.
Item);
if
FTableType = TTableType
.
ttSubnets
then
begin
ImageInfos := new TStringList;
// CIDR_MASK, ADDRESS_COUNT, CHILD_COUNT, ITEM_TYPE, SECONDARY_ITEM_TYPE
for
each s:String
in
AGridItem[ImageInfoField].Text
.
Split([
','
])
do
ImageInfos
.
Add(s);
if
ImageInfos
.
Count =
5
then
begin
if
ImageInfos[
3
] =
'G'
then
GetNodeImages(NormalImageURL, SelectedImageURL,
TNodeType
.
ntGroup)
else
GetNodeImages(NormalImageURL, SelectedImageURL,
TNodeType
.
ntSubnet,
Integer
.
Parse(ImageInfos[
0
]),
ImageInfos[
1
] <>
'0'
,
ImageInfos[
2
] <>
'0'
);
AGridItem[ImageInfoField].Text := system
.
string
.
format(
'<img src="{0}" alt="" style="border-width:0px"/>'
, [NormalImageURL]);
end
else
AGridItem[ImageInfoField].Text :=
''
;
end
;
for
i :=
0
to
pred(FGridView
.
Columns
.
Count)
do
begin
if
FGridView
.
Columns[i]
is
GridBoundColumn
then
begin
Column := FGridView
.
Columns[i]
as
GridBoundColumn;
UserField := FEasyIPConnection
.
FindUserField(TableTypeToTableName(FTableType), Column
.
DataField);
if
Assigned(UserField)
then
begin
LookupItem :=
nil
;
for
LoopLookupItem
in
UserField
.
LookupList
do
if
LoopLookupItem
.
Caption = AValue
then
begin
LookupItem := LoopLookupItem;
Break;
end
;
if
Assigned(LookupItem)
then
begin
if
LookupItem
.
Description <>
''
then
AGridItem
.
Cells[i].Text := LookupItem
.
Description;
if
LookupItem
.
FontColour <>
nil
then
AGridItem
.
Cells[i].ForeColor := GetWebColor(Integer(LookupItem
.
FontColour));
if
LookupItem
.
BackgroundColour <>
nil
then
AGridItem
.
Cells[i].BackColor := GetWebColor(Integer(LookupItem
.
BackgroundColour));
AGridItem
.
Cells[i].Font
.
Bold := LookupItem
.
FontBold;
AGridItem
.
Cells[i].Font
.
Underline := LookupItem
.
FontUnderline;
AGridItem
.
Cells[i].Font
.
Italic := LookupItem
.
FontItalic;
end
else
begin
if
UserField
.
BackgroundColour <>
nil
then
AGridItem
.
Cells[i].BackColor := GetWebColor(Integer(UserField
.
BackgroundColour));
if
UserField
.
FontColour <>
nil
then
AGridItem
.
Cells[i].ForeColor := GetWebColor(Integer(UserField
.
FontColour));
AGridItem
.
Cells[i].Font
.
Bold := UserField
.
FontBold;
AGridItem
.
Cells[i].Font
.
Underline := UserField
.
FontUnderline;
AGridItem
.
Cells[i].Font
.
Italic := UserField
.
FontItalic;
end
;
end
;
end
;
end
;
end
;
end
;
method TGridHelper
.
UpdateCommand(source: System
.
Object; e: Telerik
.
Web
.
UI
.
GridUpdatedEventArgs);
var
EditedItem: GridEditableItem;
SubnetId, KeyValue: Int64;
NewValues: Hashtable;
FieldNames: List<String>;
FieldValues: List<Object>;
TableName: String;
i: Integer;
begin
EditedItem := e
.
Item
as
GridEditableItem;
KeyValue := Int64(e
.
Item
.
OwnerTableView
.
DataKeyValues[e
.
Item
.
ItemIndex][
'ID'
]);
NewValues := Hashtable
.
Create;
FieldNames := new List<String>;
FieldValues := new List<Object>;
//The GridTableView will fill the values from all editable columns in the hash
e
.
Item
.
OwnerTableView
.
ExtractValuesFromItem(NewValues, EditedItem);
for
Entry:KeyValuePair<String, Object>
in
NewValues
do
begin
FieldNames
.
Add(Entry
.
Key
.
ToString);
FieldValues
.
Add(Entry
.
Value);
end
;
case
FTableType
of
TTableType
.
ttAddresses: TableName :=
'ADDRESSES_USER_DATA'
;
TTableType
.
ttSubnets: TableName :=
'SUBNETS_USER_DATA'
;
end
;
// case
FEasyIPConnection
.
UpdateUserFields(TableName, KeyValue, FieldNames
.
ToArray, FieldValues
.
ToArray);
(* ChangedRow := ChangedRows[0];
ChangedRow.BeginEdit;
ATransaction := nil;
try
for Entry in newValues do
begin
FieldPropertiesItem := SessionHelper.FieldPropertiesList.GetFieldPropertiesItem(Session['TableName'].ToString, Entry.Key.ToString);
if (Assigned(FieldPropertiesItem)) and (FieldPropertiesItem.Mandatory) and ((not Assigned(Entry.Value)) or (Entry.Value.ToString = '')) then
raise EEasyIPError.Create(system.string.Format(GetLocalisationString(105), [Entry.Key.ToString]));
if not Assigned(entry.Value) then // Null cannot be assigned to ChangedRow
ChangedRow[entry.Key.ToString] := DBNULL.Value
else
try
ChangedRow[entry.Key.ToString] := entry.Value;
except
raise EEasyIPError.Create(system.string.format(GetLocalisationString(28), [entry.Value, entry.Key.ToString]));
end;
if SetSQL <> '' then
SetSQL := concat(SetSQL, ',');
SetSQL := system.string.format('{0}"{1}"=@P{2}', [SetSQL, entry.Key.ToString, ParamCounter.ToString]);
SessionHelper.DBConnection.SQLCommand.Parameters.Add(FBParameter.Create(system.string.format('@P{0}', [ParamCounter.ToString]), ChangedRow[entry.Key.ToString]));
inc(ParamCounter);
end;
UpdateText := system.string.format(UpdateText, [SetSQL]);
SessionHelper.ExecuteQuery(UpdateText);
ChangedRow.EndEdit;
SessionHelper.DBConnection.DataSet.AcceptChanges;
SessionHelper.CommitTransaction;
except
on ex:Exception do
begin
ChangedRow.CancelEdit;
e.Canceled := TRUE;
SessionHelper.RollbackTransaction;
With (e.Item as GridEditFormItem).FindControl('lblUpdateErrorTop') as &Label do
begin
Text := SessionHelper.DBConnection.TranslateException(ex);
Visible := TRUE;
end;
With (e.Item as GridEditFormItem).FindControl('lblUpdateErrorBottom') as &Label do
begin
Text := SessionHelper.DBConnection.TranslateException(ex);
Visible := TRUE;
end;
end;
end;
end;*)
end
;
procedure
TGridHelper
.
DeleteCommand(source: System
.
Object; e: GridCommandEventArgs);
var
EditedItem: GridEditableItem;
SubnetId, KeyValue: Int64;
begin
EditedItem := e
.
Item
as
GridEditableItem;
KeyValue := Int64(e
.
Item
.
OwnerTableView
.
DataKeyValues[e
.
Item
.
ItemIndex][
'ID'
]);
SubnetId := Int64(Session[
'LastDataGridSubnetId'
]);
FEasyIPConnection
.
DeleteIPAddressesById(SubnetId, [KeyValue]);
end
;
method TGridHelper
.
CloseGrid;
begin
FGridView
.
DataSource :=
nil
;
FGridView
.
Visible := FALSE;
end
;
method TGridHelper
.
OpenGrid(NodeType: TNodeType; AutonomousNetworkId, SubnetId: Int64);
begin
FDataSet :=
nil
;
FTableType := TTableType
.
ttSubnets;
case
NodeType
of
TNodeType
.
ntAutonomousNetwork:
begin
FDataSet := FEasyIPConnection
.
GetGridRootNodes(AutonomousNetworkId);
end
;
TNodeType
.
ntGroupWithChildren,
TNodeType
.
ntRestrictedGroupWithChildren,
TNodeType
.
ntSubnetWithChildren:
begin
FDataSet := FEasyIPConnection
.
GetGridChildNodes(AutonomousNetworkId, SubnetId);
end
;
TNodeType
.
ntSubnetWithIPAddresses:
begin
FDataSet := FEasyIPConnection
.
GetGridNodeIPAddresses(SubnetId);
FTableType := TTableType
.
ttAddresses;
end
;
end
;
// case
if
Assigned(FDataSet)
then
begin
FGridView
.
DataSource := FDataSet;
FGridView
.
MasterTableView
.
DataMember := FDataset
.
Tables[
0
].TableName;
FGridView
.
Visible := TRUE;
OpenGrid;
end
else
CloseGrid;
Session[
'LastDataGridSubnetId'
] := SubnetId;
end
;
method TGridHelper
.
OpenGrid;
const
IMAGE_COL_WIDTH =
30
;
var
UserFields:
array
of
TUserField;
NewButton: GridEditCommandColumn;
NewGridButtonColumn: GridButtonColumn;
KeyFieldNames: Array
of
String;
i, FixedColCount: Integer;
VisibleColumnCount, VisibleColumnIndex: Integer;
begin
FGridView
.
Columns
.
Clear;
FixedColCount :=
0
;
VisibleColumnCount :=
0
;
SetLength(KeyFieldNames,
1
);
KeyFieldNames[
0
] :=
'ID'
;
FGridView
.
MasterTableView
.
DataKeyNames := KeyFieldNames;
case
FTableType
of
TTableType
.
ttSubnets:
begin
FGridView
.
MasterTableView
.
EditFormSettings
.
CaptionDataField :=
'SHORT_SUBNET'
;
FGridView
.
MasterTableView
.
EditFormSettings
.
CaptionFormatString :=
'Subnet: <B>{0}</B>'
;
end
;
TTableType
.
ttAddresses:
begin
FGridView
.
MasterTableView
.
EditFormSettings
.
CaptionDataField :=
'SHORT_IP_ADDRESS'
;
FGridView
.
MasterTableView
.
EditFormSettings
.
CaptionFormatString :=
'IP Address: <B>{0}</B>'
;
end
;
end
;
FGridView
.
AutoGenerateEditColumn :=
true
;
FGridView
.
AllowAutomaticUpdates :=
false
;
// Create edit button
NewButton := GridEditCommandColumn
.
Create;
FGridView
.
Columns
.
Add(NewButton);
NewButton
.
ButtonType := Telerik
.
Web
.
UI
.
GridButtonColumnType
.
ImageButton;
NewButton
.
Groupable := FALSE;
NewButton
.
HeaderStyle
.
Width := IMAGE_COL_WIDTH;
NewButton
.
Reorderable := FALSE;
NewButton
.
Resizable := FALSE;
Inc(FixedColCount);
// Create delete button
if
FTableType = TTableType
.
ttAddresses
then
begin
NewGridButtonColumn := GridButtonColumn
.
Create;
FGridView
.
Columns
.
Add(NewGridButtonColumn);
NewGridButtonColumn
.
CommandName :=
'Delete'
;
NewGridButtonColumn
.
ConfirmText :=
'Are you sure you want to delete the selected IP address?'
;
NewGridButtonColumn
.
Text :=
'<img src="./Images/General/Delete.png" alt="x" style="border-width:0px"/>'
;
NewGridButtonColumn
.
HeaderStyle
.
Width := IMAGE_COL_WIDTH;
NewGridButtonColumn
.
Groupable := FALSE;
NewGridButtonColumn
.
Reorderable := FALSE;
NewGridButtonColumn
.
Resizable := FALSE;
Inc(FixedColCount);
end
;
// Find the fields for the selected table
UserFields := FEasyIPConnection
.
GetUserFields(TableTypeToTableName(FTableType));
for
UserField
in
UserFields
do
begin
if
((UserField
.
Selectable)
and
(
not
UserField
.
HiddenColumn))
or
((FTableType = TTableType
.
ttSubnets)
and
(UserField
.
FieldName = ImageInfoField))
then
begin
if
UserField
.
FixedColumn
then
Inc(FixedColCount);
if
UserField
.
DisplayName =
''
then
AddNewColumn(UserField
.
FieldName, Uncapitalise(UserField
.
FieldName), UserField
.
ReadOnly)
else
AddNewColumn(UserField
.
FieldName, UserField
.
DisplayName, UserField
.
ReadOnly);
if
not
UserField
.
ReadOnly
then
Inc(VisibleColumnCount);
end
;
end
;
FGridView
.
ClientSettings
.
Scrolling
.
FrozenColumnsCount := FixedColCount;
VisibleColumnIndex :=
0
;
for
i :=
0
to
pred(FGridView
.
Columns
.
Count)
do
if
(FGridView
.
Columns[i]
is
GridBoundColumn)
and
(GridBoundColumn(FGridView
.
Columns[i]).Visible)
and
(
not
GridBoundColumn(FGridView
.
Columns[i]).ReadOnly)
then
begin
GridBoundColumn(FGridView
.
Columns[i]).EditFormColumnIndex := Trunc((System
.
Double(FGridView
.
MasterTableView
.
EditFormSettings
.
ColumnNumber) / System
.
Double(VisibleColumnCount)) * System
.
Double(VisibleColumnIndex));
Inc(VisibleColumnIndex);
end
;
end
;
method TGridHelper
.
ItemCreated(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridItemEventArgs);
//var
// lbl: &Label;
begin
{if (e.Item is GridEditFormItem) and (e.Item.IsInEditMode) then
begin
lbl := &Label.Create;
lbl.ID := 'lblUpdateErrorTop';
lbl.Visible := false;
lbl.CssClass := 'label_error';
(e.Item as GridEditFormItem).EditFormCell.Controls.AddAt(0, lbl);
lbl := &Label.Create;
lbl.ID := 'lblUpdateErrorBottom';
lbl.Visible := false;
lbl.CssClass := 'label_error';
(e.Item as GridEditFormItem).EditFormCell.Controls.Add(lbl);
end;}
end
;
method TGridHelper
.
CreateColumnEditor(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridCreateColumnEditorEventArgs);
var
UserField: TUserField;
MaxLength: Integer;
FieldName, Skin: String;
ARadComboBoxItem: RadComboBoxItem;
ARadComboBox: RadComboBox;
begin
if
e
.
Column
is
GridBoundColumn
then
begin
MaxLength :=
0
;
UserField := FEasyIPConnection
.
FindUserField(TableTypeToTableName(FTableType), (e
.
Column
as
GridBoundColumn).DataField);
if
Assigned(UserField)
then
begin
FieldName := (e
.
Column
as
GridBoundColumn).DataField
.
ToString;
MaxLength := UserField
.
FieldSize;
if
UserField
.
FieldType
in
[TEIPDataType
.
edatString, TEIPDataType
.
edatWideString]
then
begin
if
UserField
.
LookupType <> TUserFieldLookupType
.
ltNone
then
begin
e
.
ColumnEditor := new TCustomColumnEditor(concat(
'DropDown_'
, FieldName), TEditorType
.
etComboBox);
ARadComboBox := ((e
.
ColumnEditor
as
TCustomColumnEditor).EditControl
as
RadComboBox);
ARadComboBox
.
AllowCustomText := UserField
.
LookupType = TUserFieldLookupType
.
ltEditable;
ARadComboBox
.
Items
.
Clear;
for
LookupItem
in
UserField
.
LookupList
do
begin
ARadComboBoxItem := new RadComboBoxItem;
ARadComboBoxItem
.
Value := LookupItem
.
Caption;
ARadComboBoxItem
.
Text := LookupItem
.
Caption;
if
LookupItem
.
FontColour <>
nil
then
ARadComboBoxItem
.
ForeColor := GetWebColor(Integer(LookupItem
.
FontColour));
if
LookupItem
.
BackgroundColour <>
nil
then
ARadComboBoxItem
.
BackColor := GetWebColor(Integer(LookupItem
.
BackgroundColour));
ARadComboBoxItem
.
Font
.
Bold := LookupItem
.
FontBold;
ARadComboBoxItem
.
Font
.
Underline := LookupItem
.
FontUnderline;
ARadComboBoxItem
.
Font
.
Italic := LookupItem
.
FontItalic;
ARadComboBox
.
Items
.
Add(ARadComboBoxItem);
end
;
ARadComboBoxItem := RadComboBoxItem
.
Create;
ARadComboBoxItem
.
Value :=
''
;
ARadComboBoxItem
.
Text :=
'[Blank]'
;
ARadComboBox
.
Items
.
Add(ARadComboBoxItem);
ARadComboBox
.
MaxLength := MaxLength;
end
else
if
UserField
.
EditMask <>
''
then
begin
e
.
ColumnEditor := new TCustomColumnEditor(concat(
'MaskEdit_'
, FieldName), TEditorType
.
etMaskedText);
((e
.
ColumnEditor
as
TCustomColumnEditor).EditControl
as
RadMaskedTextBox).Mask := UserField
.
EditMask;
((e
.
ColumnEditor
as
TCustomColumnEditor).EditControl
as
RadMaskedTextBox).MaxLength := MaxLength;
end
else
begin
e
.
ColumnEditor := new TCustomColumnEditor(concat(
'Edit_'
, FieldName), TEditorType
.
etText);
((e
.
ColumnEditor
as
TCustomColumnEditor).EditControl
as
RadTextBox).MaxLength := MaxLength;
end
;
end
else
begin
if
UserField
.
FieldType
in
[TEIPDataType
.
edatWideMemo, TEIPDataType
.
edatMemo]
then
e
.
ColumnEditor := new TCustomColumnEditor(concat(
'TextBox_'
, FieldName), TEditorType
.
etMemo, Skin);
end
;
end
;
end
;
end
;
method TGridHelper
.
FGridView_DeleteCommand(source: Object; e: GridCommandEventArgs);
begin
end
;
method TGridHelper
.
OpenGrid(
const
SearchText: String;
const
TableName: String; TableId: Int64; SearchOption: TSearchOption; FieldIds: Array
of
System
.
Int64);
begin
if
TableName =
'SUBNETS'
then
begin
FTableType := TTableType
.
ttSubnets;
FDatatable := FEasyIPConnection
.
SearchTableBasic(TableId,SearchText,SearchOption,FieldIds);
end
else
if
TableName =
'ADDRESSES'
then
begin
FTableType := TTableType
.
ttAddresses;
FDatatable := FEasyIPConnection
.
SearchTableBasic(TableId,SearchText,SearchOption,FieldIds);
end
else
if
TableName =
'GLOBAL ARP TABLE'
then
begin
FDatatable := FEasyIPConnection
.
SearchARPEntries(SearchText);
end
else
begin
// raise error
end
;
// Load FDataset here (FDataset := FEasyIPConnection.SearchTableBasic(....
if
FDatatable <>
nil
then
begin
FGridView
.
DataSource := FDatatable;
FGridView
.
MasterTableView
.
DataMember := FDatatable
.
TableName;
FGridView
.
Visible := TRUE;
OpenGrid;
end
;
end
;
method TGridHelper
.
OpenGrid(
const
TableName: String);
begin
FGridView
.
DataSource := FEasyIPConnection
.
GetUserFields(TableName
.
ToUpper());;;
FGridView
.
MasterTableView
.
DataMember := FDatatable
.
TableName;
FGridView
.
Visible := TRUE;
OpenGrid;
end
;
method TGridHelper
.
ItemCommand(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridCommandEventArgs);
begin
if
e
.
CommandName = RadGrid
.
EditCommandName
then
begin
//OpenGrid;
end
;
if
e
.
CommandName = RadGrid
.
InitInsertCommandName
then
FGridView
.
MasterTableView
.
ClearEditItems();
if
e
.
CommandName = RadGrid
.
UpdateCommandName
then
begin
//UpdateCommand(sender,e);
//var str : String;
//str := "Update"
end
end
;
method TGridHelper
.
ItemUpdated(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridUpdatedEventArgs);
var
EditedItem: GridEditableItem;
begin
EditedItem := e
.
Item
as
GridEditableItem;
end
;
method TGridHelper
.
UpdateCommand(sender: System
.
Object; e: Telerik
.
Web
.
UI
.
GridCommandEventArgs);
var
EditedItem: GridEditableItem;
Item : GridEditFormItem;
SubnetId, KeyValue: Int64;
NewValues: Hashtable;
FieldNames: List<String>;
FieldValues: List<Object>;
TableName,PlantName: String;
i: Integer;
begin
EditedItem := e
.
Item
as
GridEditableItem;
FGridView
.
MasterTableView
.
ClearEditItems();
KeyValue := Int64(e
.
Item
.
OwnerTableView
.
DataKeyValues[e
.
Item
.
ItemIndex][
'ID'
]);
NewValues := new Hashtable;
FieldNames := new List<String>;
FieldValues := new List<Object>;
if
e
.
Item
.
IsInEditMode =
true
then
begin
var
str : String;
str := "Edit";
end
;
//The GridTableView will fill the values from all editable columns in the hash
e
.
Item
.
OwnerTableView
.
ExtractValuesFromItem(NewValues, EditedItem);
var
IPAddress : String;
IPAddress := (editedItem["Location"].Controls[
1
]
as
TextBox).Text;
for
Entry:DictionaryEntry
in
NewValues
do
begin
FieldNames
.
Add(Entry
.
Key
.
ToString);
FieldValues
.
Add(Entry
.
Value);
end
;
case
FTableType
of
TTableType
.
ttAddresses: TableName :=
'ADDRESSES_USER_DATA'
;
TTableType
.
ttSubnets: TableName :=
'SUBNETS_USER_DATA'
;
end
;
// case
FEasyIPConnection
.
UpdateUserFields(TableName, KeyValue, FieldNames
.
ToArray, FieldValues
.
ToArray);
(* ChangedRow := ChangedRows[0];
ChangedRow.BeginEdit;
ATransaction := nil;
try
for Entry in newValues do
begin
FieldPropertiesItem := SessionHelper.FieldPropertiesList.GetFieldPropertiesItem(Session['TableName'].ToString, Entry.Key.ToString);
if (Assigned(FieldPropertiesItem)) and (FieldPropertiesItem.Mandatory) and ((not Assigned(Entry.Value)) or (Entry.Value.ToString = '')) then
raise EEasyIPError.Create(system.string.Format(GetLocalisationString(105), [Entry.Key.ToString]));
if not Assigned(entry.Value) then // Null cannot be assigned to ChangedRow
ChangedRow[entry.Key.ToString] := DBNULL.Value
else
try
ChangedRow[entry.Key.ToString] := entry.Value;
except
raise EEasyIPError.Create(system.string.format(GetLocalisationString(28), [entry.Value, entry.Key.ToString]));
end;
if SetSQL <> '' then
SetSQL := concat(SetSQL, ',');
SetSQL := system.string.format('{0}"{1}"=@P{2}', [SetSQL, entry.Key.ToString, ParamCounter.ToString]);
SessionHelper.DBConnection.SQLCommand.Parameters.Add(FBParameter.Create(system.string.format('@P{0}', [ParamCounter.ToString]), ChangedRow[entry.Key.ToString]));
inc(ParamCounter);
end;
UpdateText := system.string.format(UpdateText, [SetSQL]);
SessionHelper.ExecuteQuery(UpdateText);
ChangedRow.EndEdit;
SessionHelper.DBConnection.DataSet.AcceptChanges;
SessionHelper.CommitTransaction;
except
on ex:Exception do
begin
ChangedRow.CancelEdit;
e.Canceled := TRUE;
SessionHelper.RollbackTransaction;
With (e.Item as GridEditFormItem).FindControl('lblUpdateErrorTop') as &Label do
begin
Text := SessionHelper.DBConnection.TranslateException(ex);
Visible := TRUE;
end;
With (e.Item as GridEditFormItem).FindControl('lblUpdateErrorBottom') as &Label do
begin
Text := SessionHelper.DBConnection.TranslateException(ex);
Visible := TRUE;
end;
end;
end;
end;*)
end
;
method TGridHelper
.
FGridView_UpdateCommand(source: Object; e: GridCommandEventArgs);
begin
end
;
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
DataClassesDataContext db =
new
DataClassesDataContext();
var query = from episodes
in
db.Episode_Dims
orderby episodes.ep_skey descending
select
new
{ episodes.season_skey, episodes.ep_skey, date_skey =
Convert.ToDateTime(episodes.date_skey.ToString()) };
if
(maxSeason > 0)
query = query.Where(p => p.season_skey == maxSeason);
RadGrid1.DataSource = query;
}
Is there any way to add a header row above an existing header row to group certain headers? For example, say I have the following headers:
Office Sales Target Sales Actual Purchases Target Purchases Actual
Buffalo $24 $22 $2 $4
... ... ... ... ...
Instead of having "Sales" in all three column headers, I'd like it to look like the following:
Sales Purchases
Office Target Actual Target Actual
Buffalo $24 $22 $2 $4
... ... ... ... ...
Is there any way to accomplish this?