Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
103 views
Hello All,

I having a RadGrid with Filter enabled. when one search base on some filter and then wants to add record (inline edit) then a row is visible and when add record it will disapper due to filter is not cleared.

when nofilter is applied the filter condition is disappers and adding record is fine.

Is there any way to do when some one click on "Add Row", then filter condition is removed???

Please also check attached screen....

I tried below code, not works for me..

protected

 

void grdDelegation_ItemCommand(object source, GridCommandEventArgs e)

 

{

 

try

 

{

hdnDelegationCommandName.Value = e.CommandName;

 

switch (e.CommandName)

 

{

 

case RadGrid.EditCommandName:

 

hdnDelegationGridAddUpdate.Value =

"2";

 

 

if (grdDelegation.MasterTableView.IsItemInserted)

 

{

e.Canceled =

true;

 

}

 

break;

 

 

case RadGrid.InitInsertCommandName:

 

 

//Pair filterPair = (Pair)e.CommandArgument;

 

 

//TextBox filterBox = (e.Item as GridFilteringItem)[filterPair.Second.ToString()].Controls[0] as TextBox;

 

 

//filterBox.Text = "";

 



ajmal
Top achievements
Rank 1
 answered on 25 Nov 2010
1 answer
72 views
Hello,

My appointments in the scheduler have a 'Status' field. This value may be set by selecting a status from the AppointmentContextMenu.

I would like to be able to bold the text of the status menu item that matches the current status of the appointment, so that it's clear to the user what the current status of the appointment is.

How can I achieve this?

Regards,
Anthony
Veronica
Telerik team
 answered on 25 Nov 2010
3 answers
246 views
I would like to ask how I can add aggregations to group expressions so that the group headers in  RadGrid display aggregated values.
For example I want to display all count of grouped elements but not in group footer. In custom paging.
And how to display grouped elements on others page. beacuse now it shows grouped  elements per page not whole table.
All in custom paging :)
Nikolay Rusev
Telerik team
 answered on 25 Nov 2010
11 answers
100 views
When I put a HeaderTemplate on my RadListBox it triggers an "Error: '2.offsetHeight' is null or not an object".  The form still shows but the header is very tall.  I have defined a css to get the height set correctly.

<style type="text/css" >
    .RadListBox1 div.rlbHeader
    {
        height:25px;
    }
</style>

Below is the RadListBox definition

<asp:Panel runat="server" id="pnlCustomFieldListValues" CssClass="fieldPanel" Visible="false">
    <div style="float: left; width: 750px;">
        <asp:Label ID="Label2" runat="server"
                    AssociatedControlId="radCustomFieldListValues"
                    Text="List Values:" />
        <telerik:RadListBox runat="server" ID="radCustomFieldListValues"
                            Width="100%" Height="200px"
                            SelectionMode="Single"
                            AllowReorder="true" 
                            AllowDelete="true"
                            EnableDragAndDrop="true"
                            DataValueField="Id" 
                            ButtonSettings-ReorderButtons="All" 
                            ButtonSettings-ShowDelete="true" 
                            CssClass="RadListBox1"
                            >
        <HeaderTemplate>
            <asp:Label runat="server" Width="200" Text="Name" />
            <asp:Label runat="server" Width="200" Text="Value" />
        </HeaderTemplate>
            <ItemTemplate>
                <asp:Label 
                    runat="server" ID="lblListValueName" Width="200" 
                    Text='<%# DataBinder.Eval(Container.DataItem, "Name")%>' />
                <asp:Label 
                    runat="server" ID="lblListValue" Width="200" 
                    Text='<%# DataBinder.Eval(Container.DataItem, "Value")%>' />
            </ItemTemplate>
        </telerik:RadListBox>
    </div>
</asp:Panel>

Thanks for your help,
Dan
Yana
Telerik team
 answered on 25 Nov 2010
1 answer
411 views
Hi,

I would like to change the Telirk grid filter icon to be hilighted to know when the filter is applied on the specified column.

for ex:- i have attached one screen shot, in that ShipCountry=France is given, so once if the searching is done, then the filter icon(marked in the screen shot) should be hilighted/should change background  color

Dimo
Telerik team
 answered on 25 Nov 2010
8 answers
398 views
Hello!

I used the codes from 
http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/exporting/defaultcs.aspx

to export data in radgrid. But if I export to excel the top first line will have False False for filters with checkbox.

if I export to csv the checkbox values in csv are "", the True and False value in radgrid are not export into the csv.

I don't know why and couldn't find answer in the internet.

Please help. Thanks.
    <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> 
            </> 
    </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> 
Raj
Top achievements
Rank 1
 answered on 25 Nov 2010
11 answers
155 views
Hi

I am using a RadGrid with many colums that is wider than the screen. So, in the ClientSettings markup I have set <Scrolling AllowScroll="true" />. But this means that I have to scroll all the way to the right to see my "150 items in 15 pages" label on the footer, along with my right-aligned commanditems. I have fixed the Commanditems appearance by using jQuery to resize the "tblcommand" table, but struggling with the footer. It all seems a bit hacky - is there a better way?

<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>
Pavlina
Telerik team
 answered on 25 Nov 2010
1 answer
359 views
Hi ALL,

         I have used RadGrid and bind it from my custom class, i have create RadGrid object and bind it dynamically from database, add dynamic columns, dynamic edit columns and control, when i click on update button i got following error.

Specified argument was out of the range of valid values.
Parameter name: index


Here i am mentioning my code please check it once and let me know if i am missing anything.

.aspx

<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>

.cs file

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;

Class Flle

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;

On RadGrid1_UpdateCommand method when i try to get new values i got an error.

e.Item.OwnerTableView.ExtractValuesFromItem(NewValues, editedItem); --- Here i got an error.
Pavlina
Telerik team
 answered on 25 Nov 2010
3 answers
129 views
Hey,
I have a left had side menu control that uses PanelBar, it maintains its state between postbacks by this javascript code:

<script type="text/javascript">
    function pageLoad() {
        var currentUrl = window.location.href.toLowerCase();
        var panelbar = $find("<%= tlrkNavigationPanel.ClientID %>");

        var currentItem = null;
        var currentItemTemp = null;
        for (var i = 0; i < panelbar.get_allItems().length; i++) {
            if (panelbar.get_allItems()[i].get_linkElement() &&
            currentUrl.indexOf(panelbar.get_allItems()[i].get_linkElement().href.toLowerCase()) > -1) {
                currentItem = panelbar.get_allItems()[i];
                currentItemTemp = currentItem;
                break;
            }
        }

        while (currentItem && currentItem.get_parent() != panelbar) {
            currentItem.get_parent().expand();
            currentItem = currentItem.get_parent();
        }

        if (currentItemTemp) {
            currentItemTemp.select();
            currentItemTemp.expand();
        }
    }    
</script>

After moving to the new page it highlights the selected item and expand the menu, but if the selected item is not visible because the menu height exceeds the visible range, I need to scroll to view the selected item. Can anyone tell me how to make it auto scroll to the selected item
Thanks and best regards,
Peter
Telerik team
 answered on 25 Nov 2010
2 answers
58 views
My grid setup seems to have caused some unwanted behavior that I'd like to prevent if possible.

I have an ajaxified grid that I'm filtering through an outside radcombobox. The radcombobox sets a public variable that I then use in the NeedDataSource event to filter the grid. All of this works great except that when I click to edit a row using a popup edit form, the grid rebinds itself and I lose that filter.

Can you tell me how to preserve my grid filtering when the popup edit form appears and closes? Do I need to move my grid filtering to a different grid event for that?

btw...I'm using LINQ for my data source

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;
}
Radoslav
Telerik team
 answered on 25 Nov 2010
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?