I have 3 questions regarding a rad grid with a master/detail relationship. All of my problems are the result of me not knowing how to reference the detail view items in code behind.
1. In the master table view view I use the following to reference the items in command item template.
Dim cmdItem As GridCommandItem = DirectCast(rgvApplicationIdentifiers.MasterTableView.GetItems(GridItemType.CommandItem)(0), GridCommandItem)
How do I reference the command items in the details view?
And if the following code how do I distinguish between the master EditIndexes.Count and the details EditIndexes.Count?
Dim lnkAdd As LinkButton = TryCast(cmdItem.FindControl("lbtAdd"), LinkButton)
If
Me.rgvSecurityUsers.EditIndexes.Count = 0 And Not Me.rgvSecurityUsers.MasterTableView.IsItemInserted And Me.hdfAdd.Value = True Then
lnkAdd.Visible =
True
End If
2. I have a rad grid that has a command item template for the master table view, that performs add/updates/inserts. The details view has the command item display to none and the records in the details view should not be allowed to be edited, deleted or new records inserted.
My s that if I have a record selected in the details view and I click the edit button in the master table view it puts my details view in edit mode. The details view records should not be able to be edited. My master view grid is named "Groups" and the details view is named "Users". I thought I could could check for the e.Item.OwnerTableView.Name <> "Groups" and cancel the action if the tablename wasn't "Groups" but this did not work. The tablename always returns "Groups". I am guessing that I am not using the correct syntax to check if the details table has been selected. So my question is what syntax should I use to check to see if the details view has been selected vs the master view? The end result is that I am trying to prevent the Details view from going into edit mode when I click the Edit button on the master table view.
Case "EditSelected", "DeleteSelected"
If e.Item.OwnerTableView.Name <> "Groups" Or Me.rgvSecurityGroups.SelectedValue Is Nothing Then
Dim strMessage As String = "You must select a group before selecting this option."
Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210, 'Missing Group');"
ScriptManager.RegisterStartupScript(
Me, Me.[GetType](), "radalert", scriptstring, True)
e.Canceled =
"true"
End If
3. I have a grid that is a master/details view. Both have a command item template that allows records to be added, edited or deleted.
If I select a record in the master grid and click the edit button, I get the following error message.
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.
If I remove the command item template from the details view, I do not get the error.
Below is my code.
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/IPSMaster.Master" CodeBehind="WBC SYS Application Identifiers.aspx.vb" Inherits="IPS_Gateway.WBC_SYS_Application_Identifiers" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="act" %> <asp:Content ID="cntMain" ContentPlaceHolderID="cphMainContent" runat="server" > <asp:SqlDataSource ID="SQLDS_Level1" runat="server" ConnectionString="<%$ ConnectionStrings:IPSDataConnectionString %>" SelectCommandType="StoredProcedure" SelectCommand="[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del]" > <SelectParameters> <asp:Parameter Name="strCommandType" Type="String" DefaultValue="Select" /> </SelectParameters> <SelectParameters> <asp:Parameter Name="intLevelNumber" Type="Int16" DefaultValue="1" /> </SelectParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="SQLDS_Level2" runat="server" ConnectionString="<%$ ConnectionStrings:IPSDataConnectionString %>" SelectCommandType="StoredProcedure" SelectCommand="[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del]" > <SelectParameters> <asp:Parameter Name="strCommandType" Type="String" DefaultValue="Select" /> </SelectParameters> <SelectParameters> <asp:Parameter Name="intLevelNumber" Type="Int16" DefaultValue="2" /> </SelectParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="SQLDS_Level3" runat="server" ConnectionString="<%$ ConnectionStrings:IPSDataConnectionString %>" SelectCommandType="StoredProcedure" SelectCommand="[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del]" > <SelectParameters> <asp:Parameter Name="strCommandType" Type="String" DefaultValue="Select" /> </SelectParameters> <SelectParameters> <asp:Parameter Name="intLevelNumber" Type="Int16" DefaultValue="3" /> </SelectParameters> </asp:SqlDataSource> <asp:panel ID="pnlPage" runat="server" SkinId="skn_GPC01_Panel_MainContent"> <asp:panel ID="pnlStatus" runat="server" CssClass="css_GPC01_Panel_Status"> <asp:Label ID="lblReadOnly" runat="server" Text="Read Only" CssClass="css_GPC01_Label_Status"/> <asp:Label ID="lblAdd" runat="server" Text="Add" CssClass="css_GPC01_Label_Status"/> <asp:Label ID="lblEdit" runat="server" Text="Edit" CssClass="css_GPC01_Label_Status"/> <asp:Label ID="lblDelete" runat="server" Text="Delete" CssClass="css_GPC01_Label_Status"/> <asp:Label ID="lblObject" runat="server" Text="Object" CssClass="css_GPC01_Label_Status"/> <asp:HiddenField ID="hdfReadOnly" runat="server" /> <asp:HiddenField ID="hdfAdd" runat="server" /> <asp:HiddenField ID="hdfEdit" runat="server" /> <asp:HiddenField ID="hdfDelete" runat="server" /> </asp:panel> <asp:panel ID="pnlPageHeader" runat="server" cssClass="css_GPC01_Panel_PageHeading" > <asp:Label ID="lblPageTitle" runat="server" CssClass="css_GPC01_Label_PageTitle" Text="Security Identifiers" /> <asp:ImageButton ID="ibtPageInformation" runat="server" SkinID="skn_GPC01_ImageButton_PageInformation" /> </asp:panel> <asp:panel ID="pnlPageContent" runat="server" cssClass="css_GPC01_Panel_PageContent" > <asp:UpdatePanel ID="uppGrid" runat="server" > <ContentTemplate> <telerik:RadGrid ID="rgvApplicationIdentifiers" runat="server" DataSourceID="SQLDS_Level1" EnableEmbeddedSkins="true" Skin="WebBlue" EnableViewState="true" AutoGenerateColumns="False" AllowMultiRowSelection="false" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowFilteringByColumn="False" EnableLinqExpressions="false" AllowPaging="True" PageSize="50" height="560px" Width="1038px"> <PagerStyle AlwaysVisible="true" Mode="NextPrevAndNumeric" /> <ItemStyle Wrap="false" /> <ClientSettings AllowColumnsReorder="false" EnablePostBackOnRowClick="true" AllowExpandCollapse="true" > <Selecting AllowRowSelect="true" /> <Scrolling AllowScroll="true" UseStaticHeaders="true" /> </ClientSettings> <MasterTableView DataSourceID="SQLDS_Level1" DataKeyNames="Level1Code, Level2Code, Level3Code, LevelNumber" EnableViewState="true" ExpandCollapseColumn-ButtonType ="ImageButton" ExpandCollapseColumn-CollapseImageUrl="../../App_Themes/Images/General/Expand Pale Blue 16.png" ExpandCollapseColumn-ExpandImageUrl= "../../App_Themes/Images/General/Expand Pale Blue 16.png" EditMode="InPlace" CommandItemDisplay="Top" Name="Level1" > <CommandItemTemplate > <div style="padding: 5px 5px;"> <asp:LinkButton ID="lbtAdd" runat="server" CommandName="InitInsert" ToolTip="Add New Group" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count = 0 or Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>'> <asp:Image ID="imgAdd" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,AddRecord20%>" /> Add </asp:LinkButton> <asp:LinkButton ID="lbtEdit" runat="server" CommandName="EditSelected" ToolTip="Edit Group" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count=0 and Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>'> <asp:Image ID="imgEdit" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,EditRecord20%>"/> Edit </asp:LinkButton> <asp:LinkButton ID="lbtCancel" runat="server" CommandName="CancelAll" ToolTip="Cancel Edit/Add" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count > 0 Or rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>'> <asp:Image ID="imgCancel" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,CancelRecord20%>" /> Cancel </asp:LinkButton> <asp:LinkButton ID="lbtSaveNew" runat="server" CommandName="PerformInsert" ToolTip="Save New Group" Visible='<%# rgvApplicationIdentifiers.MasterTableView.IsItemInserted%>'> <asp:Image ID="imgSaveNew" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,SaveRecord20%>" /> Save New</asp:LinkButton> <asp:LinkButton ID="lbtDelete" runat="server" CommandName="DeleteSelected" ToolTip="Delete Group" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count=0 and Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>' OnClientClick="javascript:return confirm('You have selected to delete this user.<br>This process CANNOT BE UNDONE. <br> <br> Do you want to continue?')"> <asp:Image ID="imgDelete" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,DeleteRecord20%>" />Delete </asp:LinkButton> <asp:LinkButton ID="lbtSave" runat="server" CommandName="UpdateEdited" ToolTip="Save Changes" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count > 0 AND Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted%>'> <asp:Image ID="imgSave" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,SaveRecord20%>" /> Update </asp:LinkButton> <asp:LinkButton ID="lbtFilters" runat="server" CommandName="ShowHideFilters" style="position:absolute;left:800px;" ToolTip="Show/Hide Filters" > <asp:Image ID="Image2" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,Filter20%>" /> Show/Hide Filter</asp:LinkButton> <asp:LinkButton ID="lbtRefresh" runat="server" CommandName="RebindGrid" style="position:absolute;Left:930px;" > <asp:Image id="imgRefresh" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$Resources:Images, ReloadBlue20 %>" />Refresh Grid</asp:LinkButton> </div> </CommandItemTemplate> <Columns> <telerik:GridBoundColumn DataField="Level1Code" UniqueName="Level1Code" HeaderText="Id" HeaderStyle-HorizontalAlign="Center" HeaderStyle-Width="100px" /> <telerik:GridTemplateColumn HeaderText="Total Levels" HeaderStyle-HorizontalAlign="Center" HeaderStyle-Width="60px" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="TotalLevels" runat="server" Text='<%# Bind("TotalLevels") %>' /> </ItemTemplate> <EditItemTemplate> <telerik:RadComboBox runat="server" ID="rcbTotalLevels" AppendDataBoundItems="true" AutoPostBack="true" EnableEmbeddedSkins="true" Skin="WebBlue" Width="50px" AllowCustomText="false" > <Items> <telerik:RadComboBoxItem Text="2" /> <telerik:RadComboBoxItem Text="3" /> </Items> </telerik:RadComboBox> </EditItemTemplate> <InsertItemTemplate> <telerik:RadComboBox runat="server" ID="rcbTotalLevelsInsert" AppendDataBoundItems="true" AutoPostBack="true" EnableEmbeddedSkins="true" Skin="WebBlue" Width="50px" AllowCustomText="false" > <Items> <telerik:RadComboBoxItem Text="2" /> <telerik:RadComboBoxItem Text="3" /> </Items> </telerik:RadComboBox> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Use Identifier Code?" HeaderStyle-Width="100px" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkUseIdentifierCode" runat="server" Checked='<%# Bind("UseIdentifierCode") %>' /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox ID="chkUseIdentifierCodeInsert" runat="server" /> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Show In Sort?" HeaderStyle-Width="100px" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkShowInSort" runat="server" Checked='<%# Bind("ShowInSort") %>' /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox ID="chkShowInSortInsert" runat="server" /> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Active?" HeaderStyle-Width="100px" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkActiveFlag" runat="server" Checked='<%# Bind("ActiveFlag") %>' /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox ID="chkActiveFlagInsert" runat="server" /> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderStyle-Width="300px" ></telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="LevelNumber" UniqueName="LevelNumber" DefaultInsertValue="1" Visible="false" DataType="System.Int16" /> </Columns> <DetailTables> <telerik:GridTableView DataKeyNames="Level1Code, Level2Code, Level3Code" HierarchyLoadMode="ServerOnDemand" Name="Level2" EditMode="InPlace" CommandItemDisplay="Top" > <CommandItemTemplate > <div style="padding: 5px 5px;"> <asp:LinkButton ID="lbtAdd" runat="server" CommandName="InitInsert" ToolTip="Add New Group" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count = 0 or Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>'> <asp:Image ID="imgAdd" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,AddRecord20%>" /> Add </asp:LinkButton> <asp:LinkButton ID="lbtEdit" runat="server" CommandName="EditSelected" ToolTip="Edit Group" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count=0 and Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>'> <asp:Image ID="imgEdit" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,EditRecord20%>"/> Edit </asp:LinkButton> <asp:LinkButton ID="lbtCancel" runat="server" CommandName="CancelAll" ToolTip="Cancel Edit/Add" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count > 0 Or rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>'> <asp:Image ID="imgCancel" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,CancelRecord20%>" /> Cancel </asp:LinkButton> <asp:LinkButton ID="lbtSaveNew" runat="server" CommandName="PerformInsert" ToolTip="Save New Group" Visible='<%# rgvApplicationIdentifiers.MasterTableView.IsItemInserted%>'> <asp:Image ID="imgSaveNew" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,SaveRecord20%>" /> Save New</asp:LinkButton> <asp:LinkButton ID="lbtDelete" runat="server" CommandName="DeleteSelected" ToolTip="Delete Group" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count=0 and Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted %>' OnClientClick="javascript:return confirm('You have selected to delete this user.<br>This process CANNOT BE UNDONE. <br> <br> Do you want to continue?')"> <asp:Image ID="imgDelete" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,DeleteRecord20%>" />Delete </asp:LinkButton> <asp:LinkButton ID="lbtSave" runat="server" CommandName="UpdateEdited" ToolTip="Save Changes" Visible='<%# rgvApplicationIdentifiers.EditIndexes.Count > 0 AND Not rgvApplicationIdentifiers.MasterTableView.IsItemInserted%>'> <asp:Image ID="imgSave" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,SaveRecord20%>" /> Update </asp:LinkButton> <asp:LinkButton ID="lbtFilters" runat="server" CommandName="ShowHideFilters" style="position:absolute;left:800px;" ToolTip="Show/Hide Filters" > <asp:Image ID="Image2" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$ Resources:Images,Filter20%>" /> Show/Hide Filter</asp:LinkButton> <asp:LinkButton ID="lbtRefresh" runat="server" CommandName="RebindGrid" style="position:absolute;Left:930px;" > <asp:Image id="imgRefresh" runat="server" CssClass="css_GFS01_Image_Align" ImageURL="<%$Resources:Images, ReloadBlue20 %>" />Refresh Grid</asp:LinkButton> </div> </CommandItemTemplate> <Columns> <telerik:GridBoundColumn DataField="Level1Code" UniqueName="Level1Code" Visible="false" /> <telerik:GridBoundColumn DataField="Level2Code" UniqueName="Level2Code" HeaderText="Level 2 Code" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="150px" ItemStyle-HorizontalAlign="Left" /> <telerik:GridBoundColumn DataField="Level3Code" UniqueName="Level3Code" Visible="false" /> <telerik:GridBoundColumn DataField="IdentifierCode" UniqueName="IdentifierCode" HeaderText="Identifier Code" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="150px" /> <telerik:GridTemplateColumn HeaderText="Use Identifier Code?" HeaderStyle-Width="100px" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkUseIdentifierCode" runat="server" Checked='<%# Bind("UseIdentifierCode") %>' /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox ID="chkUseIdentifierCodeInsert" runat="server" /> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Show In Sort?" HeaderStyle-HorizontalAlign="Center" HeaderStyle-Width="100px" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkShowInSort" runat="server" Checked='<%# Bind("ShowInSort") %>' /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox ID="chkShowInSortInsert" runat="server" /> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Active?" HeaderStyle-HorizontalAlign="Center" HeaderStyle-Width="100px" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox ID="chkActiveFlag" runat="server" Checked='<%# Bind("ActiveFlag") %>' /> </ItemTemplate> <InsertItemTemplate> <asp:CheckBox ID="chkActiveFlagInsert" runat="server" /> </InsertItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="LevelNumber" UniqueName="LevelNumber" DefaultInsertValue="2" Visible="false" DataType="System.Int16" /> <telerik:GridBoundColumn DataField="TotalLevels" UniqueName="TotalLevels" DefaultInsertValue="0" Visible="false" DataType="System.Int16" /> </Columns> </telerik:GridTableView> </DetailTables> </MasterTableView> </telerik:RadGrid> <telerik:GridTextBoxColumnEditor ID="gtcEditor1" runat="server" TextBoxStyle-Width="150px" /> <telerik:RadWindowManager ID="rwmMessageBox" runat="server" Behaviors="Close, Move" EnableViewState="false" Animation="Slide" AnimationDuration="5" Height="400" Width="400" VisibleOnPageLoad="true" DestroyOnClose="true" Modal="true" EnableEmbeddedSkins="true" Skin="Black" /> </ContentTemplate> </asp:UpdatePanel> </asp:panel> </asp:panel> </asp:Content> Imports IPS_Gateway.CLS_Data_Retrieval Imports IPS_Gateway.CLS_String_Functions Imports Telerik.Web.UI Imports System.Data.SqlClient Imports System.Drawing Partial Public Class WBC_SYS_Application_Identifiers Inherits System.Web.UI.Page Private Sub rgvApplicationIdentifiers_DeleteCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgvApplicationIdentifiers.DeleteCommand Dim GridItem As GridDataItem = DirectCast(e.Item, GridDataItem) Dim strLevel1 As String = GridItem.GetDataKeyValue("Level1Code") Dim strLevel2 As String = GridItem.GetDataKeyValue("Level2Code") Dim strLevel3 As String = GridItem.GetDataKeyValue("Level3Code") Dim intLevelNumber As Integer = 0 Dim strLogonUser As String = Request.ServerVariables("AUTH_USER") Select Case e.Item.OwnerTableView.Name Case "Level1" intLevelNumber = 1 Me.SQLDS_Level1.DeleteCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level1.DeleteCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Delete', '" + strLevel1 + "', '" + strLevel2 + "', '" + strLevel3 + "', " + intLevelNumber.ToString + ", NULL, NULL, NULL, NULL, NULL, '" + strLogonUser + "'" Case "Level2" intLevelNumber = 2 Me.SQLDS_Level2.DeleteCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level2.DeleteCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Delete', '" + strLevel1 + "', '" + strLevel2 + "', '" + strLevel3 + "', " + intLevelNumber.ToString + ", NULL, NULL, NULL, NULL, NULL, '" + strLogonUser + "'" Case "Level3" intLevelNumber = 3 Me.SQLDS_Level3.DeleteCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level3.DeleteCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Delete', '" + strLevel1 + "', '" + strLevel2 + "', '" + strLevel3 + "', " + intLevelNumber.ToString + ", NULL, NULL, NULL, NULL, NULL, '" + strLogonUser + "'" End Select End Sub Protected Sub rgvApplicationIdentifiers_ItemDeleted(ByVal source As Object, ByVal e As Telerik.Web.UI.GridDeletedEventArgs) Handles rgvApplicationIdentifiers.ItemDeleted If Not e.Exception Is Nothing Then Dim GridItem As GridDataItem = DirectCast(e.Item, GridDataItem) Dim strMessage As String = "Identifier cannot be deleted. <br> Reason: " + e.Exception.Message Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210, 'Error Deleting Identifier');" e.ExceptionHandled = True ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "radalert", scriptstring, True) End If End Sub Private Sub rgvApplicationIdentifiers_UpdateCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgvApplicationIdentifiers.UpdateCommand Dim ParentItem As GridDataItem Dim EditedItem As GridEditableItem = DirectCast(e.Item, GridEditableItem) Dim strLevel1 As String = Nothing Dim strLevel2 As String = "Unassigned" Dim strLevel3 As String = "Unassigned" Dim strIdentifierCode As String = Nothing Dim intLevelNumber As Integer = 0 Dim intTotalLevels As Integer = 0 Dim bitShowInSort As Boolean = Nothing Dim bitActiveFlag As Boolean = Nothing Dim strLogonUser As String = Request.ServerVariables("AUTH_USER") Dim strMessage As String = Nothing Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210,'Invalid Field Value');" Select e.Item.OwnerTableView.Name Case "Level1" strLevel1 = DirectCast(EditedItem("Level1").Controls(0), TextBox).Text intLevelNumber = "1" intTotalLevels = DirectCast(EditedItem.FindControl("rcbTotalLevels"), RadComboBox).Text bitShowInSort = DirectCast(EditedItem.FindControl("chkShowInSort"), CheckBox).Checked bitActiveFlag = DirectCast(EditedItem.FindControl("chkActiveFlag"), CheckBox).Checked Me.SQLDS_Level1.UpdateCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level1.UpdateCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Update', '" + strLevel1 + "', '" + strLevel2 + "', '" + strLevel3 + "', '" + intLevelNumber.ToString + "', '" + intTotalLevels.ToString + "', '" + strIdentifierCode + "', '" + bitShowInSort.ToString + "', '" + bitActiveFlag.ToString + "', '" + strLogonUser + "'" Case "Level2" ParentItem = DirectCast(e.Item.OwnerTableView.ParentItem, GridDataItem) strLevel1 = DirectCast(ParentItem("Level1Code").Controls(0), TextBox).Text strLevel2 = DirectCast(EditedItem("Level2Code").Controls(0), TextBox).Text strIdentifierCode = DirectCast(EditedItem("IdentifierCode").Controls(0), TextBox).Text intLevelNumber = "2" bitShowInSort = DirectCast(EditedItem.FindControl("chkShowInSort"), CheckBox).Checked bitActiveFlag = DirectCast(EditedItem.FindControl("chkActiveFlag"), CheckBox).Checked Me.SQLDS_Level2.UpdateCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level2.UpdateCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Update', '" + strLevel1 + "', '" + strLevel2 + "', '" + strLevel3 + "', '" + intLevelNumber.ToString + "', '" + intTotalLevels.ToString + "', '" + strIdentifierCode + "', '" + bitShowInSort.ToString + "', '" + bitActiveFlag.ToString + "', '" + strLogonUser + "'" Case "Level3" ParentItem = DirectCast(e.Item.OwnerTableView.ParentItem, GridDataItem) strLevel1 = DirectCast(ParentItem("Level1Code").Controls(0), TextBox).Text strLevel2 = DirectCast(ParentItem("Level2Code").Controls(0), TextBox).Text strLevel3 = DirectCast(EditedItem("Level3Code").Controls(0), TextBox).Text strIdentifierCode = DirectCast(EditedItem("IdentifierCode").Controls(0), TextBox).Text intLevelNumber = "3" bitShowInSort = DirectCast(EditedItem.FindControl("chkShowInSort"), CheckBox).Checked bitActiveFlag = DirectCast(EditedItem.FindControl("chkActiveFlag"), CheckBox).Checked Me.SQLDS_Level3.UpdateCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level3.UpdateCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Update', '" + strLevel1 + "', '" + strLevel2 + "', '" + strLevel3 + "', '" + intLevelNumber.ToString + "', '" + intTotalLevels.ToString + "', '" + strIdentifierCode + "', '" + bitShowInSort.ToString + "', '" + bitActiveFlag.ToString + "', '" + strLogonUser + "'" End Select End Sub Protected Sub rgvApplicationIdentifiers_ItemUpdated(ByVal source As Object, ByVal e As Telerik.Web.UI.GridUpdatedEventArgs) Handles rgvApplicationIdentifiers.ItemUpdated If Not e.Exception Is Nothing Then Dim EditItem As GridEditableItem = DirectCast(e.Item, GridEditableItem) Dim strMessage As String = "Identifier cannot be updated. <br> Reason: " + e.Exception.Message Dim scriptstring As String = "radalert('" + strMessage + "', 250, 300, 'Error Updating Indentifier');" e.KeepInEditMode = True e.ExceptionHandled = True ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "radalert", scriptstring, True) End If End Sub Private Sub rgvApplicationIdentifiers_InsertCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgvApplicationIdentifiers.InsertCommand Dim ParentItem As GridDataItem Dim InsertItem As GridDataInsertItem = DirectCast(e.Item.OwnerTableView.GetInsertItem(), GridDataInsertItem) Dim strLevel1Code As String = Nothing Dim strLevel2 As String = "Unassigned" Dim strLevel3 As String = "Unassigned" Dim strIdentifierCode As String = "DEFAULT" Dim intLevelNumber As Integer = 0 Dim intTotalLevels As Integer = 0 Dim bitUseIdentifier As Boolean = Nothing Dim bitShowInSort As Boolean = Nothing Dim bitActiveFlag As Boolean = Nothing Dim strLogonUser As String = Request.ServerVariables("AUTH_USER") Dim strMessage As String = Nothing Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210,'Invalid Field Value');" Select Case e.Item.OwnerTableView.Name Case "Level1" strLevel1Code = DirectCast(InsertItem("Level1Code").Controls(0), TextBox).Text intLevelNumber = 1 intTotalLevels = DirectCast(InsertItem.FindControl("rcbTotalLevelsInsert"), RadComboBox).Text bitUseIdentifier = DirectCast(InsertItem.FindControl("chkUseIdentifierCodeInsert"), CheckBox).Checked bitShowInSort = DirectCast(InsertItem.FindControl("chkShowInSortInsert"), CheckBox).Checked bitActiveFlag = DirectCast(InsertItem.FindControl("chkActiveFlagInsert"), CheckBox).Checked Me.SQLDS_Level1.InsertCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level1.InsertCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Insert', '" + strLevel1Code + "', '" + strLevel2 + "', '" + strLevel3 + "', " + intLevelNumber.ToString + ", " + intTotalLevels.ToString + ", " + bitUseIdentifier.ToString + ", NULL, " + bitShowInSort.ToString + ", " + bitActiveFlag.ToString + ", '" + strLogonUser + "'" Case "Level2" ParentItem = DirectCast(e.Item.OwnerTableView.ParentItem, GridDataItem) strLevel1Code = DirectCast(ParentItem("Level1Code").Controls(0), TextBox).Text strLevel2 = DirectCast(InsertItem("Level2Code").Controls(0), TextBox).Text strIdentifierCode = DirectCast(InsertItem("IdentifierCode").Controls(0), TextBox).Text intLevelNumber = 2 intTotalLevels = 0 bitUseIdentifier = DirectCast(InsertItem.FindControl("chkUseIdentifierCodeInsert"), CheckBox).Checked bitShowInSort = DirectCast(InsertItem.FindControl("chkShowInSortInsert"), CheckBox).Checked bitActiveFlag = DirectCast(InsertItem.FindControl("chkActiveFlagInsert"), CheckBox).Checked Me.SQLDS_Level2.InsertCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level2.InsertCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Insert', '" + strLevel1Code + "', '" + strLevel2 + "', '" + strLevel3 + "', " + intLevelNumber.ToString + ", " + intTotalLevels.ToString + ", " + bitUseIdentifier.ToString + ", '" + strIdentifierCode + "', " + bitShowInSort.ToString + ", " + bitActiveFlag.ToString + ", '" + strLogonUser + "'" Case "Level3" ParentItem = DirectCast(e.Item.OwnerTableView.ParentItem, GridDataItem) strLevel1Code = DirectCast(ParentItem("Level1Code").Controls(0), TextBox).Text strLevel2 = DirectCast(ParentItem("Level2Code").Controls(0), TextBox).Text strLevel3 = DirectCast(InsertItem("Level3Code").Controls(0), TextBox).Text strIdentifierCode = DirectCast(InsertItem("IdentifierCode").Controls(0), TextBox).Text intLevelNumber = 3 intTotalLevels = 0 bitUseIdentifier = DirectCast(InsertItem.FindControl("chkUseIdentifierCodeInsert"), CheckBox).Checked bitShowInSort = DirectCast(InsertItem.FindControl("chkShowInSortInsert"), CheckBox).Checked bitActiveFlag = DirectCast(InsertItem.FindControl("chkActiveFlagInsert"), CheckBox).Checked Me.SQLDS_Level3.InsertCommandType = SqlDataSourceCommandType.Text Me.SQLDS_Level3.InsertCommand = "[Security].[DSP_SecurityIdentifiers-Sel-Ins-Upd-Del] 'Insert', '" + strLevel1Code + "', '" + strLevel2 + "', '" + strLevel3 + "', " + intLevelNumber.ToString + ", " + intTotalLevels.ToString + ", " + bitUseIdentifier.ToString + ", '" + strIdentifierCode + "', " + bitShowInSort.ToString + ", " + bitActiveFlag.ToString + ", '" + strLogonUser + "'" End Select End Sub Protected Sub rgvApplicationIdentifiers_ItemInserted(ByVal source As Object, ByVal e As Telerik.Web.UI.GridInsertedEventArgs) Handles rgvApplicationIdentifiers.ItemInserted If Not e.Exception Is Nothing Then Dim strMessage As String = "Identifier cannot be added. <br> Reason: " + e.Exception.Message Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210, 'Error On Item Insert');" e.ExceptionHandled = True e.KeepInInsertMode = True ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "radalert", scriptstring, True) End If End Sub Private Sub WBC_SEC_Security_Groups_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then If Request("Source") IsNot Nothing Then If Request("Level1") <> "All" Then SQLDS_Level1.SelectParameters.Add("strLevel1", Request("Level1")) SQLDS_Level1.SelectParameters.Add("intLevelNumber", "2") Me.lblPageTitle.Text = Request("Source") + " " + Request("Level1") Else Me.lblPageTitle.Text = Request("Source") + " Identifiers" End If Dim strSelectCommand As String = "[" + Request("Source") + "].[DSP_" + Request("Source") + "Identifiers-Sel-Ins-Upd-Del]" Dim strSecurityString As String = If(Request("SecurityString") = Nothing, "1,0,0,0", Request("SecurityString")) Me.lblObject.Text = If(Request("ObjectId") = Nothing, "Unknown", Request("ObjectId")) Dim aryString As String() = strSecurityString.Split(",") hdfReadOnly.Value = aryString(0) Me.lblReadOnly.ForeColor = If(Me.hdfReadOnly.Value = False, Color.Gray, Color.Red) hdfAdd.Value = aryString(1) Me.lblAdd.ForeColor = If(Me.hdfAdd.Value = False, Color.Gray, Color.Red) hdfEdit.Value = aryString(2) Me.lblEdit.ForeColor = If(Me.hdfEdit.Value = False, Color.Gray, Color.Red) hdfDelete.Value = aryString(3) Me.lblDelete.ForeColor = If(Me.hdfDelete.Value = False, Color.Gray, Color.Red) End If End If End Sub Private Sub rgvApplicationIdentifiers_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgvApplicationIdentifiers.ItemCommand Select Case e.CommandName Case "ShowHideFilters" If rgvApplicationIdentifiers.AllowFilteringByColumn = True Then rgvApplicationIdentifiers.AllowFilteringByColumn = False Else rgvApplicationIdentifiers.AllowFilteringByColumn = True End If rgvApplicationIdentifiers.Rebind() Case "DeleteSelected" If rgvApplicationIdentifiers.SelectedValue Is Nothing Then Dim strMessage As String = "You must select a row before selecting this option." Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210, 'Selected Row Is Null');" ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "radalert", scriptstring, True) e.Canceled = "true" End If Case "EditSelected" If rgvApplicationIdentifiers.SelectedValue Is Nothing Then Dim strMessage As String = "You must select a row before selecting this option." Dim scriptstring As String = "radalert('" + strMessage + "', 330, 210, 'Select Row Is Null');" ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "radalert", scriptstring, True) e.Canceled = "true" Else End If Case "RebindGrid" ViewState("FilterSecurityGroup") = "All" rgvApplicationIdentifiers.MasterTableView.FilterExpression = "" rgvApplicationIdentifiers.MasterTableView.Rebind() End Select End Sub Private Sub rgvApplicationIdentifiers_DetailTableDataBind(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridDetailTableDataBindEventArgs) Handles rgvApplicationIdentifiers.DetailTableDataBind Dim ParentRow As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem) Dim strLevel1 As String = ParentRow.GetDataKeyValue("Level1Code") Dim strLevel2 As String = ParentRow.GetDataKeyValue("Level2Code") If e.DetailTableView.Name = "Level2" Then SQLDS_Level2.SelectParameters.Clear() SQLDS_Level2.SelectParameters.Add("strLevel1", strLevel1) SQLDS_Level2.SelectParameters.Add("intLevelNumber", "2") e.DetailTableView.DataSource = SQLDS_Level2 ElseIf e.DetailTableView.Name = "Level3" Then SQLDS_Level3.SelectParameters.Clear() SQLDS_Level3.SelectParameters.Add("strLevel1", strLevel1) SQLDS_Level3.SelectParameters.Add("strLevel2", strLevel2) SQLDS_Level3.SelectParameters.Add("intLevelNumber", "3") e.DetailTableView.DataSource = SQLDS_Level3 End If End Sub Private Sub rgvApplicationIdentifiers_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles rgvApplicationIdentifiers.ItemDataBound If (TypeOf e.Item Is GridEditableItem) AndAlso (e.Item.IsInEditMode) AndAlso (Not e.Item.OwnerTableView.IsItemInserted) Then Dim edititem As GridEditableItem = DirectCast(e.Item, GridEditableItem) edititem("Level1Code").Enabled = False End If End Sub End Class Thank you for your assistance.
Tracy