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