Hi,
I am testing out the Drag/Drop capabilities of the RadGrid (dragging from one grid to another), and I've come across a problem. It works great when the grid I'm dragging from has more than one row, but if there's one row I get the following JScript error thrown:
Microsoft JScript runtime error: Unable to get value of the property 'rows': object is null or undefined
Here's my ASPX markup:
Here's my code behind:
Thanks!
I am testing out the Drag/Drop capabilities of the RadGrid (dragging from one grid to another), and I've come across a problem. It works great when the grid I'm dragging from has more than one row, but if there's one row I get the following JScript error thrown:
Microsoft JScript runtime error: Unable to get value of the property 'rows': object is null or undefined
Here's my ASPX markup:
<script type="text/javascript"> function OnClientUpdated(sender, args) { var message = "Update (check) was done!"; var newMsgs = sender.get_value(); if (newMsgs != 0) { sender.show(); message += (newMsgs == 1) ? (" There is 1 new message!") : (" There are " + newMsgs + " new messages!"); } else { message += " There are no new messages!"; } } </script> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadScriptBlock runat="server" ID="scriptBlock"> <script type="text/javascript"> <!-- function onRowDropping(sender, args) { if (sender.get_id() == "<%=RadGrid1.ClientID %>") { var node = args.get_destinationHtmlElement(); if (!isChildOf('<%=RadGrid2.ClientID %>', node) && !isChildOf('<%=RadGrid1.ClientID %>', node)) { args.set_cancel(true); } } else { var node = args.get_destinationHtmlElement(); if (!isChildOf('trashCan', node)) { args.set_cancel(true); } else { if (confirm("Are you sure you want to delete this order?")) args.set_destinationHtmlElement($get('trashCan')); else args.set_cancel(true); } } } function isChildOf(parentId, element) { while (element) { if (element.id && element.id.indexOf(parentId) > -1) { return true; } element = element.parentNode; } return false; } --> </script> </telerik:RadScriptBlock> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> <telerik:RadSplitter ID="RadSplitter1" Width="100%" runat="server"> <telerik:RadPane runat="server"> <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="true" onneeddatasource="RadGrid1_NeedDataSource" onrowdrop="RadGrid1_RowDrop"> <MasterTableView AllowCustomSorting="true" AllowPaging="true" DataKeyNames="ID" AllowSorting="true" PageSize="20"> </MasterTableView> <ClientSettings AllowRowsDragDrop="True" AllowColumnsReorder="true" ReorderColumnsOnClient="true"> <Resizing AllowColumnResize="true" /> <Selecting AllowRowSelect="True" EnableDragToSelectRows="false"/> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> <ClientEvents OnRowDropping="onRowDropping" /> </ClientSettings></telerik:RadGrid> </telerik:RadPane> <telerik:RadSplitBar runat="server"></telerik:RadSplitBar> <telerik:RadPane runat="server"> <telerik:RadGrid ID="RadGrid2" runat="server" AllowFilteringByColumn="true" onneeddatasource="RadGrid2_NeedDataSource" onrowdrop="RadGrid2_RowDrop"> <MasterTableView AllowCustomSorting="true" DataKeyNames="ID" AllowPaging="true" AllowSorting="true" PageSize="20"> </MasterTableView> <ClientSettings AllowRowsDragDrop="True" AllowColumnsReorder="true" ReorderColumnsOnClient="true"> <Resizing AllowColumnResize="true" /> <ClientEvents OnRowDropping="onRowDropping" /> <Selecting AllowRowSelect="True" EnableDragToSelectRows="false"/> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings></telerik:RadGrid> </telerik:RadPane> </telerik:RadSplitter> </telerik:RadAjaxPanel> <telerik:RadNotification ID="RadNotification1" runat="server" LoadContentOn="TimeInterval" Width="300" Animation="Fade" EnableRoundedCorners="true" EnableShadow="true" OnClientUpdated="OnClientUpdated" Title="Notifications" OffsetX="-20" OffsetY="-20" TitleIcon="none" UpdateInterval="10000" AutoCloseDelay="1500" OnCallbackUpdate="OnCallbackUpdate"> <ContentTemplate> <asp:Literal ID="lbl" runat="server"></asp:Literal> </ContentTemplate> </telerik:RadNotification>Here's my code behind:
public IList<Delivery> _Deliveries { get { return (List<Delivery>)Session["Deliveries"]; } set { Session["Deliveries"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { _Deliveries = new List<Delivery>(); _Deliveries.Add(new Delivery { ID = 1, Assigned = false, Customer = "Micross", TripDate = DateTime.Today }); _Deliveries.Add(new Delivery { ID = 2, Assigned = false, Customer = "Test", TripDate = DateTime.Today }); _Deliveries.Add(new Delivery { ID = 3, Assigned = false, Customer = "Micross3", TripDate = DateTime.Today }); _Deliveries.Add(new Delivery { ID = 4, Assigned = false, Customer = "Test3", TripDate = DateTime.Today }); RadGrid1.DataBind(); } } private void BindMain() { RadGrid1.DataBind(); } private void BindSecond() { RadGrid2.DataSource = _Deliveries.Where(a => a.Assigned == true); RadGrid2.DataBind(); } protected void OnCallbackUpdate(object sender, RadNotificationEventArgs e) { int newMsgs = DateTime.Now.Second % 10; if (newMsgs == 5 || newMsgs == 7 || newMsgs == 8 || newMsgs == 9) newMsgs = 0; lbl.Text = String.Concat(new object[] { "You have ", newMsgs, " new invoices to process!" }); RadNotification1.Value = newMsgs.ToString(); } protected void RadGrid2_RowDrop(object sender, GridDragDropEventArgs e) { foreach (GridDataItem draggedItem in e.DraggedItems) { var tmpOrder = _Deliveries.Where(a => a.ID == (long)draggedItem.GetDataKeyValue("ID")).Single(); tmpOrder.Assigned = false; } RadGrid1.Rebind(); RadGrid2.Rebind(); } protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { RadGrid1.DataSource = _Deliveries.Where(a => a.Assigned == false); } protected void RadGrid2_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { RadGrid2.DataSource = _Deliveries.Where(a => a.Assigned == true); } protected void RadGrid1_RowDrop(object sender, GridDragDropEventArgs e) { foreach (GridDataItem draggedItem in e.DraggedItems) { var tmpOrder = _Deliveries.Where(a => a.ID == (long)draggedItem.GetDataKeyValue("ID")).Single(); tmpOrder.Assigned = true; } RadGrid1.Rebind(); RadGrid2.Rebind(); }Thanks!