I have a page with numerous grids for which drag and drop is enabled to reorder items within the grid. One grid, which I've adapted the code from other working grids, will not refresh the grid on screen even though the codebehind correctly changes the underling data
Below are my *.aspx file and *.vb file -- I've pulled the problematic grid out into it's own file and it persists in misbehaving on its own as well. I've about exhausted my creative ideas for solving the problem.
Any ideas?
Thanks,
Brad Smith
Below are my *.aspx file and *.vb file -- I've pulled the problematic grid out into it's own file and it persists in misbehaving on its own as well. I've about exhausted my creative ideas for solving the problem.
Any ideas?
Thanks,
Brad Smith
Imports System.Data.SqlClient
Imports Telerik.Web.UI
Imports dsMeetingDataDatasetTableAdapters
Imports dsMeetingDataDataset
Imports System.Data.Sql
Partial Class _admin_frmTest
Inherits System.Web.UI.Page
Dim myadapter As New PresentationsTableAdapter
Protected Sub PAge_Load() Handles MyBase.Load
End Sub
Protected Sub rgInterests_itemcommand(ByVal sender As Object, ByVal e As GridCommandEventArgs)
'gets grid item
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim item As GridDataItem = Me.rgInterests.Items(index)
'gets Session interest ID
Dim intSessIntID As Integer = Server.HtmlDecode(item("SessionInterestID").Text)
Dim bllSI As New bllSessionsInterests
Select Case e.CommandName
Case "DeleteMe"
'Me.lblDebug.Text = "Delete Sess Int ID: " & intSessParID
bllSI.DeleteSessionInterest(intSessIntID)
Me.rgInterests.DataBind()
End Select
bllSI = Nothing
End Sub
Protected Sub rgInterests_itemcreated(ByVal sender As Object, ByVal e As GridItemEventArgs)
If e.Item.ItemType = GridItemType.AlternatingItem Or e.Item.ItemType = GridItemType.Item Then
Dim item As GridDataItem
item = e.Item
Dim ibtn As ImageButton
'does the delete
ibtn = item("Delete").FindControl("ibtnDelete")
ibtn.CommandArgument = e.Item.ItemIndex.ToString()
End If
End Sub
Protected Sub rgInterests_itemdatabound(ByVal sender As Object, ByVal e As GridItemEventArgs)
If TypeOf e.Item Is GridDataItem Then
Dim dataItem As GridDataItem = CType(e.Item, GridDataItem)
Dim button As ImageButton = dataItem("Delete").FindControl("ibtnDelete")
button.Attributes.Add("onClick", "return confirm('Are you sure you want to remove this interest?');")
End If
End Sub
Protected Sub rgInterests_RowDrop(ByVal sender As Object, ByVal e As GridDragDropEventArgs)
If e.DestDataItem IsNot Nothing AndAlso e.DestDataItem.OwnerGridID = rgInterests.ClientID Then
'reorder items in pending grid
Dim destItem As Integer = e.DestDataItem.GetDataKeyValue("SessionInterestID")
Dim destIndex As Integer = e.DestDataItem.ItemIndex
Dim originItem As Integer = e.DraggedItems(0).GetDataKeyValue("SessionInterestID")
Dim originIndex As Integer = e.DraggedItems(0).ItemIndex
'do move
Dim intSessionID = lblSessionID.Text
Dim bllSessionsInterests As New bllSessionsParticipants
'Me.lblDebug.Text = "Move Up for Session Par ID: " & intPresParID & " PresentationID: " & intPresentationID
DoMove(originItem, destIndex + 1)
DoMove(destItem, originIndex + 1)
rgInterests.Rebind()
e.DestDataItem.Selected = True
End If
End Sub
Public Sub DoMove(ByVal intIDToMove As Integer, ByVal intOrderFieldValue As Integer)
'loads constring from web.config
Dim strConString As String = ConfigurationManager.ConnectionStrings("MeetingDataConnectionString").ConnectionString
Dim conData As New SqlConnection(strConString)
conData.Open()
Dim strSQL As String
strSQL = "Update Sessions_Interests set SessionInterestPriority=@neworder where SessionInterestID=@SessIntID;"
Dim objCmd As New SqlCommand(strSQL, conData)
Dim paramNewOrd As New SqlParameter("@neworder", Data.SqlDbType.Int)
paramNewOrd.Value = intOrderFieldValue
objCmd.Parameters.Add(paramNewOrd)
Dim paramSessIntID As SqlParameter
paramSessIntID = New SqlParameter("@SessIntID", Data.SqlDbType.Int)
paramSessIntID.Value = intIDToMove
objCmd.Parameters.Add(paramSessIntID)
Response.Write(objCmd.ExecuteNonQuery())
conData.Close()
conData.Dispose()
paramNewOrd = Nothing
paramSessIntID = Nothing
objCmd = Nothing
End Sub
End Class
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="frmTest.aspx.vb" Inherits="_admin_frmTest" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
<
meta
http-equiv
=
"X-UA-Compatible"
content
=
"IE=8"
/>
<
title
>Session form</
title
>
</
head
>
<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function onInterestRowDropping(sender, args) {
if (sender.get_id() == "<%=rgInterests.ClientID %>") {
var node = args.get_destinationHtmlElement();
if (!isChildOf('<%=rgInterests.ClientID %>', node) && !isChildOf('<%=rgInterests.ClientID %>', node)) {
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:RadCodeBlock
>
<
body
class
=
'darkforeclass'
>
<
form
id
=
"form2"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
</
telerik:RadScriptManager
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
EnableAJAX
=
'True'
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"rgInterests"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"rgInterests"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
ID
=
"rgInterests"
runat
=
"server"
DataSourceID
=
"sqlDSInterests"
GridLines
=
"None"
OnItemCommand
=
"rgInterests_itemcommand"
OnItemCreated
=
"rgInterests_itemcreated"
AllowPaging
=
'True'
OnItemDataBound
=
"rgInterests_itemdatabound"
OnRowDrop
=
"rgInterests_RowDrop"
PagerStyle-AlwaysVisible
=
"False"
PageSize
=
'4'
Skin
=
"Simple"
Width
=
"625px"
Height
=
'150px'
AutoGenerateColumns
=
"False"
>
<
ClientSettings
AllowRowsDragDrop
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
EnableDragToSelectRows
=
"False"
/>
<
ClientEvents
OnRowDropping
=
"onInterestRowDropping"
/>
</
ClientSettings
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
DataKeyNames
=
"SessionInterestID"
Width
=
"100%"
GridLines
=
"None"
>
<
NoRecordsTemplate
>
No Interests listed.</
NoRecordsTemplate
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"SessionInterestID"
DataType
=
"System.Int32"
HeaderText
=
"SessionInterestID"
ReadOnly
=
"True"
SortExpression
=
"SessionInterestID"
UniqueName
=
"SessionInterestID"
Visible
=
'False'
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"InterestID"
DataType
=
"System.Int32"
HeaderText
=
"InterestID"
SortExpression
=
"InterestID"
UniqueName
=
"InterestID"
Visible
=
'False'
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"SessionInterestPriority"
DataType
=
"System.Int32"
HeaderText
=
"#"
SortExpression
=
"SessionInterestPriority"
UniqueName
=
"SessionInterestPriority"
Visible
=
'True'
>
<
ItemStyle
Width
=
'20px'
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"SessionID"
DataType
=
"System.Int32"
HeaderText
=
"SessionID"
SortExpression
=
"SessionID"
UniqueName
=
"SessionID"
Visible
=
'False'
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Interest"
SortExpression
=
"Interest"
UniqueName
=
"Interest"
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblInterest"
runat
=
"server"
CssClass
=
'tinylinkclass'
><%#Eval("Interest") %></
asp:Label
>
</
ItemTemplate
>
<
HeaderStyle
Width
=
'550px'
/>
<
ItemStyle
HorizontalAlign
=
'left'
Width
=
'550px'
/>
<
FooterStyle
Width
=
"550px"
/>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
'Delete'
>
<
ItemTemplate
>
<
asp:ImageButton
ID
=
'ibtnDelete'
runat
=
'server'
CommandName
=
'DeleteMe'
ImageUrl
=
'images/trash.gif'
/></
td
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
<
FilterMenu
EnableTheming
=
"True"
Skin
=
"Hay"
>
<
CollapseAnimation
Duration
=
"200"
Type
=
"OutQuint"
/>
</
FilterMenu
>
</
telerik:RadGrid
>
<
div
class
=
"buttonbarclass"
>
<
asp:LinkButton
ID
=
"btnAddSessionInterest"
runat
=
"server"
CommandName
=
"AddSessionInterest"
CssClass
=
"noultinylinkclass"
><
img
style
=
"border:0px;vertical-align:middle;"
alt
=
""
src
=
"images/add16.png"
/> Add Session Keyword</
asp:LinkButton
>
</
div
>
<
telerik:RadWindow
ID
=
"rwSessionInterest"
runat
=
"server"
Behaviors
=
"Close, Move"
Height
=
"400px"
Left
=
"250px"
Modal
=
"true"
NavigateUrl
=
""
OffsetElementID
=
"rwSessionInterest"
OpenerElementID="<%#btnAddSessionInterest.clientid%>" ReloadOnShow="True" Title="New Session KW"
Width="650px">
</
telerik:RadWindow
>
<
asp:Label
runat
=
'server'
ID
=
'lblSessionID'
Text
=
'567'
></
asp:Label
>
<
asp:TextBox
ID
=
"tbOrganizationName"
runat
=
"server"
Visible
=
"False"
></
asp:TextBox
>
<
asp:TextBox
ID
=
"tbOrganizerID"
runat
=
"server"
Visible
=
"False"
></
asp:TextBox
>
<
asp:Label
runat
=
'server'
ID
=
'lblSubmitterID'
Visible
=
'false'
></
asp:Label
>
<
asp:SqlDataSource
ID
=
'sqldsInterests'
runat
=
'server'
ConnectionString="<%$ ConnectionStrings:MeetingDataConnectionString %>"
SelectCommand="SELECT Sessions_Interests.SessionInterestID, Sessions_Interests.SessionID, Sessions_Interests.InterestID, Sessions_Interests.SessionInterestPriority, b.interest FROM Sessions_Interests INNER JOIN Interests AS b ON Sessions_Interests.InterestID = b.InterestID WHERE Sessions_Interests.SessionID=@MySessionID ORDER BY Sessions_Interests.SessionInterestPriority">
<
SelectParameters
>
<
asp:ControlParameter
ControlID
=
"lblSessionID"
Name
=
"MySessionID"
PropertyName
=
"Text"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
</
form
>
</
body
>
</
html
>