This is a migrated thread and some comments may be shown as answers.

AutomaticDelete not working for DetailTable using ObjectDataSource

1 Answer 123 Views
Grid
This is a migrated thread and some comments may be shown as answers.
John Anderson
Top achievements
Rank 1
John Anderson asked on 05 Nov 2009, 07:11 PM
I'm using two ObjectDataSources with a RadGrid that has a MasterTableView and one DetailTable.  AllowAutomaticDeletes is true for both tables and the ObjectDataSource has the correct DeleteMethod defined as well as DeleteParameters.  It just isn't working.

We're using 2008 Q1 RadControls, and this method works fine in a MasterTableView on another page.  I just can't figure out why it's not working for the DetailTable.

Here is aspx page:
<%@ Page Language="C#" MasterPageFile="~/Intranet.master" AutoEventWireup="true" CodeFile="SummaryAdmin.aspx.cs" Inherits="Mercer.Intranet.Feedback.UpwardFeedback.SummaryAdmin" Title="Upward Feedback" Theme="BasicBlue" %> 
 
<asp:Content ID="Content1" ContentPlaceHolderID="content" runat="Server"
 
    <script type="text/javascript"
        function ShowEditForm(fid) { 
            window.radopen("EditFeedback.aspx?FeedbackID=" + fid, "EditFeedback"); 
            return false; 
        } 
        function refreshGrid(arg) { 
            if (!arg) { 
                window["<%= UpwardFeedbackGrid.ClientID %>"].AjaxRequest('<%= UpwardFeedbackGrid.UniqueID %>', 'Rebind'); 
            } 
            else { 
                window["<%= UpwardFeedbackGrid.ClientID %>"].AjaxRequest('<%= UpwardFeedbackGrid.UniqueID %>', 'RebindAndNavigate'); 
            } 
        } 
    </script> 
 
    <asp:HyperLink ID="MainMenu" runat="server" NavigateUrl="~/Feedback/UpwardFeedback/Default.aspx" CssClass="NavButton">Main Menu</asp:HyperLink> 
    <hr /> 
    <telerik:RadWindowManager ID="myWinMgr" runat="server" Behavior="Move" EnableTheming="true" Modal="true" SkinsPath="~/App_Themes/RadControls/Window/Skins/" Skin="Outlook"
        <Windows> 
            <telerik:RadWindow ID="EditFeedback" runat="server" DestroyOnClose="false" Height="600px" Width="600px" /> 
        </Windows> 
    </telerik:RadWindowManager> 
    <telerik:RadGrid ID="UpwardFeedbackGrid" runat="server" DataSourceID="odsRevieweeRequestSummaryData" Skin="Mercer" EnableAJAXLoadingTemplate="True" LoadingTemplateTransparency="25" EnableAJAX="True" AutoGenerateColumns="False" AllowPaging="true" PageSize="25" AllowFilteringByColumn="true" AllowSorting="true" OnPreRender="UpwardFeedbackGrid_PreRender" OnItemCreated="UpwardFeedbackGrid_ItemCreated" AllowMultiRowSelection="True"
        <HeaderStyle CssClass="DataGridHeader" /> 
        <AJAXLoadingTemplate> 
            <div style="width: 100%; height: 100%;"
                <img src="../../Images/ajax-loader.gif" alt="Loading..." style="vertical-align: middle; text-align: center" /> 
            </div> 
        </AJAXLoadingTemplate> 
        <PagerStyle CssClass="PagerPanel ScreenOnly" Mode="NextPrevNumericAndAdvanced" /> 
        <MasterTableView DataSourceID="odsRevieweeRequestSummaryData" BorderColor="DarkGray" BorderStyle="Solid" BorderWidth="1px" GridLines="Both" Width="750px" DataKeyNames="RevieweeID" AllowAutomaticDeletes="True"
            <AlternatingItemStyle BackColor="#FEF1C5" HorizontalAlign="Center"></AlternatingItemStyle> 
            <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="false" /> 
            <ItemStyle HorizontalAlign="Center" /> 
            <Columns> 
                <telerik:GridBoundColumn DataField="SortName" UniqueName="SortName" HeaderText="Reviewee" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="RankName" UniqueName="RankName" HeaderText="Rank" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="OfficeName" UniqueName="OfficeName" HeaderText="Office" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="BusinessUnitCode" UniqueName="BusinessUnitCode" HeaderText="Business Unit" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="RequestCount" UniqueName="RequestCount" HeaderText="# of<br />Requests" AutoPostBackOnFilter="true" CurrentFilterFunction="GreaterThanOrEqualTo"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Center" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="CompletedCount" UniqueName="CompletedCount" HeaderText="# of<br />Completed" AutoPostBackOnFilter="true" CurrentFilterFunction="GreaterThanOrEqualTo"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Center" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn DataField="InSummaryCount" UniqueName="InSummaryCount" HeaderText="# in<br />Summary" AutoPostBackOnFilter="true" CurrentFilterFunction="GreaterThanOrEqualTo"
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" /> 
                    <ItemStyle HorizontalAlign="Center" /> 
                </telerik:GridBoundColumn> 
                <telerik:GridTemplateColumn UniqueName="SummaryLinkColumn" HeaderText="Create/Edit<br />Summary" ItemStyle-HorizontalAlign="Center" AllowFiltering="false"
                    <ItemTemplate> 
                        <asp:HyperLink ID="SummaryLink" runat="server" ImageUrl="~/Images/Icons/wi0060-16.gif" NavigateUrl='<%# "SummaryEdit.aspx?SummaryID=" + Eval("SummaryID").ToString() + "&RevieweeID=" + Eval("RevieweeID").ToString() %>' Text="Create/Edit Summary"></asp:HyperLink> 
                    </ItemTemplate> 
                </telerik:GridTemplateColumn> 
            </Columns> 
            <SortExpressions> 
                <telerik:GridSortExpression FieldName="SortName" /> 
            </SortExpressions> 
            <ExpandCollapseColumn Visible="False"
                <HeaderStyle Width="19px"></HeaderStyle> 
            </ExpandCollapseColumn> 
            <RowIndicatorColumn Visible="False"
                <HeaderStyle Width="20px"></HeaderStyle> 
            </RowIndicatorColumn> 
            <DetailTables> 
                <telerik:GridTableView DataSourceID="odsReviewerDetail" DataKeyNames="RevieweeID, ReviewerID, CompanyID, FeedbackID" BorderColor="LightGray" BorderStyle="Solid" BorderWidth="2px" GridLines="Both" Width="100%" AllowAutomaticDeletes="True"
                    <ParentTableRelation> 
                        <telerik:GridRelationFields DetailKeyField="RevieweeID" MasterKeyField="RevieweeID"></telerik:GridRelationFields> 
                    </ParentTableRelation> 
                    <AlternatingItemStyle BackColor="#FEF1C5" HorizontalAlign="Center"></AlternatingItemStyle> 
                    <HeaderStyle CssClass="CCMenuHeader" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="false" /> 
                    <ItemStyle HorizontalAlign="Center" /> 
                    <Columns> 
                        <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="You are about to delete this Request/Feedback.  Are you sure?" UniqueName="Delete" Text="Delete this Request/Feedback" ImageUrl="~/Images/Icons/deletedata16.gif"
                            <HeaderStyle HorizontalAlign="Center" /> 
                            <ItemStyle HorizontalAlign="Center" /> 
                        </telerik:GridButtonColumn> 
                        <telerik:GridBoundColumn DataField="FeedbackID" UniqueName="FeedbackID" HeaderText="FeedbackID" Visible="false"
                        </telerik:GridBoundColumn> 
                        <telerik:GridTemplateColumn UniqueName="EditFeedback"
                            <ItemStyle HorizontalAlign="Center" /> 
                            <ItemTemplate> 
                                <asp:HyperLink ID="EditFeedbackLink" runat="server" ImageUrl="~/Images/Icons/wi0060-16.gif" NavigateUrl="EditFeedback.aspx" Text="Edit Feedback"></asp:HyperLink> 
                            </ItemTemplate> 
                        </telerik:GridTemplateColumn> 
                        <telerik:GridBoundColumn DataField="ReviewerName" UniqueName="ReviewerName" HeaderText="Reviewer"
                            <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="CompanyName" UniqueName="CompanyName" HeaderText="Client"
                            <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="RequestDate" UniqueName="RequestDate" HeaderText="Requested" DataFormatString="{0:MMM dd, yyyy}"
                            <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                        </telerik:GridBoundColumn> 
                        <telerik:GridTemplateColumn UniqueName="Adhoc"
                            <HeaderTemplate> 
                                Adhoc</HeaderTemplate> 
                            <ItemTemplate> 
                                <%# Eval("Adhoc").ToString() == "True" ? "Yes": "" %> 
                            </ItemTemplate> 
                        </telerik:GridTemplateColumn> 
                        <telerik:GridBoundColumn DataField="SubmitDate" UniqueName="SubmitDate" HeaderText="Submitted" DataFormatString="{0:MMM dd, yyyy}"
                            <ItemStyle HorizontalAlign="Left" Wrap="false" /> 
                        </telerik:GridBoundColumn> 
                        <telerik:GridTemplateColumn UniqueName="InSummary"
                            <HeaderTemplate> 
                                In Summary</HeaderTemplate> 
                            <ItemTemplate> 
                                <%# Eval("InSummary").ToString() == "True" ? "Yes": "" %> 
                            </ItemTemplate> 
                        </telerik:GridTemplateColumn> 
                        <telerik:GridBoundColumn DataField="ReviewerID" UniqueName="ReviewerID" HeaderText="ReviewerID" Visible="false"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="RevieweeID" UniqueName="RevieweeID" HeaderText="RevieweeID" Visible="false"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="CompanyID" UniqueName="CompanyID" HeaderText="CompanyID" Visible="false"
                        </telerik:GridBoundColumn> 
                    </Columns> 
                    <SortExpressions> 
                        <telerik:GridSortExpression FieldName="ReviewerName" /> 
                    </SortExpressions> 
                </telerik:GridTableView> 
            </DetailTables> 
        </MasterTableView> 
        <ClientSettings> 
            <Selecting AllowRowSelect="True" /> 
        </ClientSettings> 
    </telerik:RadGrid> 
    <asp:ObjectDataSource ID="odsRevieweeRequestSummaryData" runat="server" TypeName="Mercer.Intranet.Feedback.UpwardFeedback.DataHelp" SelectMethod="GetRevieweeRequestSummaryData"></asp:ObjectDataSource> 
    <asp:ObjectDataSource ID="odsReviewerDetail" runat="server" TypeName="Mercer.Intranet.Feedback.UpwardFeedback.DataHelp" SelectMethod="GetReviewerDetail" DeleteMethod="DeleteRequestAndFeedback"
        <SelectParameters> 
            <asp:Parameter Name="RevieweeID" Type="String" /> 
        </SelectParameters> 
        <DeleteParameters> 
            <asp:Parameter Name="ReviewerID" Type="String" /> 
            <asp:Parameter Name="RevieweeID" Type="String" /> 
            <asp:Parameter Name="CompanyID" Type="String" /> 
            <asp:Parameter Name="FeedbackID" Type="String" /> 
        </DeleteParameters> 
    </asp:ObjectDataSource> 
</asp:Content> 
 


Here is code behind:
using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.IO; 
using Mercer.Data; 
using Mercer.Directory; 
using Mercer.Reference; 
using Mercer.Security; 
using Mercer.Intranet.Shared.BaseClasses; 
using Mercer.Intranet.HR; 
using Telerik.WebControls; 
 
 
namespace Mercer.Intranet.Feedback.UpwardFeedback 
    public partial class SummaryAdmin : System.Web.UI.Page 
    { 
        GridSettingsPersister gsp; 
 
        protected override void Render(HtmlTextWriter writer) 
        { 
            Session["UFSummaryAdminSettings"] = gsp.SaveSettings(); 
            base.Render(writer); 
        } 
 
        protected void Page_Init(object sender, EventArgs e) 
        { 
            gsp = new GridSettingsPersister(UpwardFeedbackGrid); 
            if (Session["UFSummaryAdminSettings"] != null
                gsp.LoadSettings(Session["UFSummaryAdminSettings"].ToString()); 
        } 
 
        private static Authenticator ui 
        { 
            get 
            { 
                Authenticator ui = new Authenticator(); 
                return ui; 
            } 
        } 
 
        private static Employee employee 
        { 
            get 
            { 
                Employee employee = new Employee(ui.WhoAmI.EmployeeID); 
                return employee; 
            } 
        } 
 
        private static Identity identity 
        { 
            get 
            { 
                return ui.WhoAmI; 
            } 
        } 
 
        private static bool Admin 
        { 
            get 
            { 
                return DataHelp.IsAdmin(); 
            } 
        } 
 
        private static bool HR 
        { 
            get 
            { 
                return DataHelp.IsHR(); 
            } 
        } 
 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            HtmlLink lnk = new HtmlLink(); 
            HtmlLink prt = new HtmlLink(); 
            lnk.Attributes.Add("rel""stylesheet"); 
            lnk.Attributes.Add("type""text/css"); 
            lnk.Attributes.Add("media""screen"); 
            lnk.Href = "~/HR/Default.css"
            prt.Attributes.Add("rel""stylesheet"); 
            prt.Attributes.Add("type""text/css"); 
            prt.Attributes.Add("media""print"); 
            prt.Href = "~/HR/Print.css"
            HtmlHead head = (HtmlHead)this.Page.Master.FindControl("pageHead"); 
            head.Controls.Add(lnk); 
            head.Controls.Add(prt); 
 
            Master.Page.Title = "Upward Feedback Administration"
            Header myHeader = (Header)Master.FindControl("myHeader"); 
            myHeader.PageTitle = Master.Page.Title; 
            #region Page Authentication 
 
            if (!Admin && !HR) 
                identity.Deny(); 
            #endregion 
        } 
 
        protected void UpwardFeedbackGrid_PreRender(object sender, EventArgs e) 
        { 
            ProcessGridRows(); 
            if (!Admin) 
            { 
                UpwardFeedbackGrid.MasterTableView.Columns.FindByUniqueName("SummaryLinkColumn").Visible = false
                UpwardFeedbackGrid.MasterTableView.Columns.FindByUniqueName("InSummaryCount").Visible = false
                UpwardFeedbackGrid.MasterTableView.DetailTables[0].Columns.FindByUniqueName("EditFeedback").Visible = false
                UpwardFeedbackGrid.MasterTableView.DetailTables[0].Columns.FindByUniqueName("Adhoc").Visible = false
                UpwardFeedbackGrid.MasterTableView.DetailTables[0].Columns.FindByUniqueName("InSummary").Visible = false
                UpwardFeedbackGrid.MasterTableView.DetailTables[0].Columns.FindByUniqueName("DeleteFeedback").Visible = false
            } 
        } 
 
        private void ProcessGridRows() 
        { 
            foreach (GridDataItem gdi in UpwardFeedbackGrid.Items) 
            { 
                if ((gdi as GridDataItem).CanExpand) 
                { 
                    if (Convert.ToInt16(((gdi as GridDataItem)["CompletedCount"as GridTableCell).Text) < 3) 
                    { 
                        (((gdi as GridDataItem)["SummaryLinkColumn"as GridTableCell).Controls[1] as HyperLink).Visible = false
                    } 
                } 
                else 
                { 
                    if (Convert.ToInt16(((gdi as GridDataItem)["FeedbackID"as GridTableCell).Text) == 0) 
                    { 
                        HyperLink EditFeedbackLink = (((gdi as GridDataItem)["EditFeedback"as GridTableCell).Controls[1] as HyperLink); 
                        EditFeedbackLink.Enabled = false
                        EditFeedbackLink.ImageUrl = "~/Images/cleardot.gif"
                        EditFeedbackLink.Height = System.Web.UI.WebControls.Unit.Pixel(16); 
                        EditFeedbackLink.Width = System.Web.UI.WebControls.Unit.Pixel(16); 
 
                    } 
                    if (((gdi as GridDataItem)["SubmitDate"as GridTableCell).Text.Length > 0) 
                        if (Convert.ToDateTime(((gdi as GridDataItem)["SubmitDate"as GridTableCell).Text) == DateTime.Parse("1/1/1900")) 
                        { 
                            ((gdi as GridDataItem)["SubmitDate"as GridTableCell).Text = ""
                        } 
                } 
            } 
        } 
 
        protected void UpwardFeedbackGrid_ItemCreated(object sender, GridItemEventArgs e) 
        { 
            if (e.Item is GridDataItem) 
            { 
                HyperLink editLink = e.Item.FindControl("EditFeedbackLink"as HyperLink; 
                if (editLink != null
                { 
                    editLink.Attributes["href"] = "#"
                    editLink.Attributes["onclick"] = string.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["FeedbackID"], e.Item.ItemIndex); 
                } 
            } 
        } 
    } 


Thanks in advance for any help,

John Anderson

1 Answer, 1 is accepted

Sort by
0
John Anderson
Top achievements
Rank 1
answered on 06 Nov 2009, 02:12 PM
It turns out that the issue was having AllowAutomaticDeletes="true" set anywhere in addition to the grid definition was keeping it from working.  Having it defined only in the grid tag makes it work.
Tags
Grid
Asked by
John Anderson
Top achievements
Rank 1
Answers by
John Anderson
Top achievements
Rank 1
Share this question
or