Hi Telerik forum, I have a simple problem I need help with.
I have a RadGrid that I need to populate with different data (depending on some parameters send to the page). I am trying to combine the two examples Edit on double click and Resizing RadGrid in RadSplitter to make a simple grid editor. In the source code here I just read an xml file to keep things simple.
I know that I do something fundamentally wrong, the question is what.
My two problems are:
Default.aspx.vb
TopCompanies.xml
I have a RadGrid that I need to populate with different data (depending on some parameters send to the page). I am trying to combine the two examples Edit on double click and Resizing RadGrid in RadSplitter to make a simple grid editor. In the source code here I just read an xml file to keep things simple.
I know that I do something fundamentally wrong, the question is what.
My two problems are:
1. If I try to change the grid page, all cells contains the text "System.Data.DataRowView" instead of the values and all column headings are blank.
2. If I double click a grid line to edit it, i get the following JavaScript error:
"Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Specified argument was out of the range of valid values. Parameter name: index"
Can someone please help me correct this code to make it work?
I'm using telerik ASPNET AJAX Q3 2008 and visual studio 2008, but i guess that doesn't matter.
I hope someone can help me?
Source files:
Default.aspx
<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="_Default" %> |
<%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" %> |
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/DTD/xhtml11.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head id="Head1" runat="server"> |
<title>RadGrid Test</title> |
<style type="text/css"> |
html, body, form { |
width: 100%; |
height: 100%; |
} |
</style> |
<script type="text/javascript" language="javascript"> |
var hasChanges, inputs, dropdowns, editedRow; |
var lastRow = null; |
function ClearEdit() { |
var oGrid = $find("RadDataGrid"); |
if (oGrid && lastRow) { |
var mtv = oGrid.get_masterTableView(); |
mtv.cancelUpdate(lastRow); |
} |
} |
function EditRow() { |
var oGrid = $find("RadDataGrid"); |
if (oGrid && editedRow) |
{ |
var mtv = oGrid.get_masterTableView(); |
mtv.editItem(editedRow); |
lastRow = editedRow; |
} |
} |
function CheckUpdates(grid) { |
if (lastRow) { |
var mtv = grid.get_masterTableView(); |
if (hasChanges) { |
if (confirm("Update changes?")) |
mtv.updateItem(lastRow); |
} |
hasChanges = false; |
var mtv = grid.get_masterTableView(); |
mtv.cancelUpdate(lastRow); |
lastRow = null; |
} |
} |
function RowClick(sender, eventArgs) { |
CheckUpdates(sender); |
} |
function RowDblClick(sender, eventArgs) { |
CheckUpdates(sender); |
editedRow = eventArgs.get_itemIndexHierarchical(); |
setTimeout("EditRow()", 500); |
} |
function GridCommand(sender, args) { |
if (args.get_commandName() != "Edit") { |
editedRow = null; |
} |
} |
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; |
} |
Array.add(elementsToUse, inputs[i]); |
inputs[i].onchange = TrackChanges; |
} |
dropdowns = gridElement.getElementsByTagName("select"); |
for (var i = 0; i < dropdowns.length; i++) { |
dropdowns[i].onchange = TrackChanges; |
} |
} |
function TrackChanges(e) { |
hasChanges = true; |
} |
function ClientResized() { |
$find("RadAjaxManager1").ajaxRequest('ChangePageSize'); |
} |
</script> |
</head> |
<body> |
<form runat="server" id="mainForm" method="post" style="width: 100%;"> |
<telerik:RadScriptManager ID="ScriptManager1" runat="server" EnableTheming="True"> |
</telerik:RadScriptManager> |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
<AjaxSettings> |
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> |
<UpdatedControls> |
<telerik:AjaxUpdatedControl ControlID="RadDataGrid" /> |
</UpdatedControls> |
</telerik:AjaxSetting> |
<telerik:AjaxSetting AjaxControlID="RadDataGrid"> |
<UpdatedControls> |
<telerik:AjaxUpdatedControl ControlID="RadDataGrid" /> |
</UpdatedControls> |
</telerik:AjaxSetting> |
</AjaxSettings> |
</telerik:RadAjaxManager> |
<telerik:RadSplitter ID="RadSplitter1" Runat="server" BorderStyle="None" FullScreenMode="True" Orientation="Horizontal"> |
<telerik:RadPane ID="RadPane1" Runat="server" OnClientResized="ClientResized" |
EnableEmbeddedBaseStylesheet="False" EnableEmbeddedSkins="False" Height="100%" |
Index="0" Skin="" Width="100%" Scrolling="None"> |
<telerik:RadGrid ID="RadDataGrid" AutoGenerateColumns="false" |
runat="server" AllowAutomaticUpdates="true" AllowMultiRowSelection="True" |
AllowPaging="True" Height="97%" ShowStatusBar="true" Skin="Office2007" |
Width="97%"> |
<HeaderContextMenu EnableTheming="True" Skin="Office2007"> |
<CollapseAnimation Duration="200" Type="OutQuint" /> |
</HeaderContextMenu> |
<PagerStyle Mode="NumericPages" /> |
<ClientSettings> |
<ClientEvents OnCommand="GridCommand" OnGridCreated="GridCreated" OnRowClick="RowClick" OnRowDblClick="RowDblClick" /> |
<Selecting AllowRowSelect="True" EnableDragToSelectRows="False" /> |
<Scrolling AllowScroll="True" UseStaticHeaders="False" FrozenColumnsCount="0" SaveScrollPosition="True" ></Scrolling> |
</ClientSettings> |
<FilterMenu EnableTheming="True" Skin="Office2007"> |
<CollapseAnimation Duration="200" Type="OutQuint" /> |
</FilterMenu> |
<MasterTableView AutoGenerateColumns="false" EditMode="InPlace" EnableViewState="True" Width="100%"> |
</MasterTableView> |
</telerik:RadGrid> |
</telerik:RadPane> |
</telerik:RadSplitter> |
</form> |
</body> |
</html> |
Default.aspx.vb
Imports System |
Imports Telerik.Web.UI |
Partial Public MustInherit Class _Default |
Inherits System.Web.UI.Page |
Protected Sub RadDataGrid_ItemUpdated(ByVal source As Object, ByVal e As GridUpdatedEventArgs) Handles RadDataGrid.ItemUpdated |
If Not e.Exception Is Nothing Then |
e.KeepInEditMode = True |
e.ExceptionHandled = True |
' Error |
Else |
Dim dataItem As GridDataItem = e.Item |
' Do Update |
End If |
End Sub |
Sub addcolumn(ByVal name As String, ByVal uniquename As String, ByVal width As Integer, ByVal FirstSelectColumn As Boolean) |
Dim GridColumn As Object |
If FirstSelectColumn Then |
GridColumn = New GridClientSelectColumn |
GridColumn.CommandName = name |
GridColumn.Text = name |
Else |
GridColumn = New GridBoundColumn |
GridColumn.DataField = name |
CType(GridColumn, GridBoundColumn).ItemStyle.HorizontalAlign = HorizontalAlign.Left |
CType(GridColumn, GridBoundColumn).ItemStyle.VerticalAlign = VerticalAlign.Top |
End If |
GridColumn.HeaderText = name |
GridColumn.UniqueName = uniquename |
GridColumn.Resizable = False |
GridColumn.Reorderable = False |
GridColumn.ItemStyle.Width = Unit.Pixel(width) |
RadDataGrid.Columns.Add(GridColumn) |
End Sub |
Private Sub LoadGridData() |
Dim oTable As New System.Data.DataTable("company") |
oTable.ReadXml(Server.MapPath("TopCompanies.xml")) |
RadDataGrid.DataSource = oTable |
If Not Page.IsPostBack Then |
addcolumn("Select", "SelectColumn", 25, True) |
addcolumn("CompanyId", "CompanyIdColumn", 40, False) |
addcolumn("CompanyName", "CompanyNameColumn", 200, False) |
addcolumn("Employees", "EmployeesColumn", 100, False) |
End If |
End Sub |
Private Sub RadDataGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles RadDataGrid.NeedDataSource |
LoadGridData() |
End Sub |
Protected Sub RadAjaxManager1_AjaxRequest(ByVal sender As Object, ByVal e As Telerik.Web.UI.AjaxRequestEventArgs) Handles RadAjaxManager1.AjaxRequest |
Select Case e.Argument.ToString() |
Case "ChangePageSize" |
Dim rows As Integer = (Int32.Parse(Me.RadPane1.Height.Value.ToString()) - 106) / 27 |
If rows >= 1 Then |
RadDataGrid.PageSize = rows |
RadDataGrid.Rebind() |
End If |
Exit Select |
End Select |
End Sub |
End Class |
TopCompanies.xml
<?xml version="1.0" encoding="UTF-8"?> |
<NewDataSet> |
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> |
<xs:complexType> |
<xs:choice minOccurs="0" maxOccurs="unbounded"> |
<xs:element name="company"> |
<xs:complexType> |
<xs:sequence> |
<xs:element name="CompanyId" type="xs:int" minOccurs="0" /> |
<xs:element name="CompanyName" type="xs:string" minOccurs="0" /> |
<xs:element name="Employees" type="xs:int" minOccurs="0" /> |
</xs:sequence> |
</xs:complexType> |
</xs:element> |
</xs:choice> |
</xs:complexType> |
</xs:element> |
</xs:schema> |
<company> |
<CompanyId>1</CompanyId> |
<CompanyName>Wal-Mart Stores</CompanyName> |
<Employees>1800000</Employees> |
</company> |
<company> |
<CompanyId>2</CompanyId> |
<CompanyName>McDonald's</CompanyName> |
<Employees>447000</Employees> |
</company> |
<company> |
<CompanyId>3</CompanyId> |
<CompanyName>United Parcel Service</CompanyName> |
<Employees>407000</Employees> |
</company> |
<company> |
<CompanyId>4</CompanyId> |
<CompanyName>Sears Holdings</CompanyName> |
<Employees>355000</Employees> |
</company> |
<company> |
<CompanyId>5</CompanyId> |
<CompanyName>Home Depot</CompanyName> |
<Employees>345000</Employees> |
</company> |
<company> |
<CompanyId>6</CompanyId> |
<CompanyName>Target</CompanyName> |
<Employees>337000</Employees> |
</company> |
<company> |
<CompanyId>7</CompanyId> |
<CompanyName>Intl. Business Machines</CompanyName> |
<Employees>329373</Employees> |
</company> |
<company> |
<CompanyId>8</CompanyId> |
<CompanyName>General Motors</CompanyName> |
<Employees>327000</Employees> |
</company> |
<company> |
<CompanyId>9</CompanyId> |
<CompanyName>General Electric</CompanyName> |
<Employees>316000</Employees> |
</company> |
<company> |
<CompanyId>10</CompanyId> |
<CompanyName>Citigroup</CompanyName> |
<Employees>303000</Employees> |
</company> |
<company> |
<CompanyId>11</CompanyId> |
<CompanyName>Ford Motor</CompanyName> |
<Employees>300000</Employees> |
</company> |
<company> |
<CompanyId>12</CompanyId> |
<CompanyName>Kroger</CompanyName> |
<Employees>289000</Employees> |
</company> |
<company> |
<CompanyId>13</CompanyId> |
<CompanyName>Albertson's</CompanyName> |
<Employees>240000</Employees> |
</company> |
<company> |
<CompanyId>14</CompanyId> |
<CompanyName>United Technologies</CompanyName> |
<Employees>222200</Employees> |
</company> |
<company> |
<CompanyId>15</CompanyId> |
<CompanyName>Verizon Communications</CompanyName> |
<Employees>217000</Employees> |
</company> |
<company> |
<CompanyId>16</CompanyId> |
<CompanyName>FedEx</CompanyName> |
<Employees>215838</Employees> |
</company> |
<company> |
<CompanyId>17</CompanyId> |
<CompanyName>Safeway</CompanyName> |
<Employees>201000</Employees> |
</company> |
<company> |
<CompanyId>18</CompanyId> |
<CompanyName>Altria Group</CompanyName> |
<Employees>199000</Employees> |
</company> |
<company> |
<CompanyId>19</CompanyId> |
<CompanyName>Aramark</CompanyName> |
<Employees>195000</Employees> |
</company> |
<company> |
<CompanyId>20</CompanyId> |
<CompanyName>Berkshire Hathaway</CompanyName> |
<Employees>192012</Employees> |
</company> |
<company> |
<CompanyId>21</CompanyId> |
<CompanyName>AT&T</CompanyName> |
<Employees>189950</Employees> |
</company> |
<company> |
<CompanyId>22</CompanyId> |
<CompanyName>Delphi</CompanyName> |
<Employees>185200</Employees> |
</company> |
<company> |
<CompanyId>23</CompanyId> |
<CompanyName>Bank of America Corp.</CompanyName> |
<Employees>176638</Employees> |
</company> |
<company> |
<CompanyId>24</CompanyId> |
<CompanyName>J.P. Morgan Chase & Co.</CompanyName> |
<Employees>168847</Employees> |
</company> |
<company> |
<CompanyId>25</CompanyId> |
<CompanyName>Yum Brands</CompanyName> |
<Employees>165920</Employees> |
</company> |
<company> |
<CompanyId>26</CompanyId> |
<CompanyName>HCA</CompanyName> |
<Employees>165450</Employees> |
</company> |
<company> |
<CompanyId>27</CompanyId> |
<CompanyName>Lowe's</CompanyName> |
<Employees>164794</Employees> |
</company> |
<company> |
<CompanyId>28</CompanyId> |
<CompanyName>PepsiCo</CompanyName> |
<Employees>157000</Employees> |
</company> |
<company> |
<CompanyId>29</CompanyId> |
<CompanyName>Walgreen</CompanyName> |
<Employees>155200</Employees> |
</company> |
<company> |
<CompanyId>30</CompanyId> |
<CompanyName>Wells Fargo</CompanyName> |
<Employees>153500</Employees> |
</company> |
</NewDataSet> |