Hello
i just added a Confirmation Dialog to my Radgrid using the radgrid.radconfirm. This works perfectly, but after that the Radgrid is not updated, like it still shows the deleted entry. Refreshing the page obv helps. I already tested the following:
Use advanced binding instead of simple binding.
Change to type BindingList instead of List as Datasourcetype
RadAjaxManager instead of RadAjaxPanel is not possible, because the panel is need as part of the whole concept of the webpage and to ensure that each user is only able to see what he is allowed to see.
Here is the code: ASPX
<%@ Page Title="News - Administration" Language="C#" MasterPageFile="~/AppMaster.master" AutoEventWireup="true" Inherits="News" CodeBehind="News.aspx.cs" %>
<%@ Register Src="NewsDetails.ascx" TagName="NewsDetails" TagPrefix="uc" %>
<
asp:Content
ID
=
"Content"
ContentPlaceHolderID
=
"PlaceHolderContent"
runat
=
"Server"
>
<
asp:Label
ID
=
"LabelRead"
runat
=
"server"
Text="<%$Resources:Labels, NoReadRight %>" Visible="false" CssClass="Labels" />
<
asp:Label
ID
=
"LabelConfirm"
runat
=
"server"
Text="<%$Resources:Labels, NoReadRight %>" Visible="false" CssClass="Labels" />
<
telerik:RadWindowManager
RenderMode
=
"Lightweight"
ID
=
"confirmWindow"
runat
=
"server"
EnableShadow
=
"true"
>
</
telerik:RadWindowManager
>
<%--RadAjaxPanel--%>
<
telerik:RadAjaxPanel
ID
=
"PanelRead"
runat
=
"server"
LoadingPanelID
=
"RadAjaxLoadingPanel"
Visible
=
"false"
>
<
telerik:RadGrid
ID
=
"RadGrid"
runat
=
"server"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
AllowPaging
=
"true"
PageSize
=
"20"
Width
=
"950px"
OnItemCommand
=
"RadGrid_ItemCommand"
OnInsertCommand
=
"RadGrid_InsertCommand"
OnDeleteCommand
=
"RadGrid_DeleteCommand"
OnUpdateCommand
=
"RadGrid_UpdateCommand"
>
<
MasterTableView
Datasource
=
"ObjectDataSourceNewsEntries"
DataKeyNames
=
"NewsEntryID"
CommandItemDisplay
=
"Top"
>
<
CommandItemSettings
ShowRefreshButton
=
"false"
ShowAddNewRecordButton
=
"true"
AddNewRecordText
=
"Neuer News-Eintrag"
/>
<
Columns
>
<%--TimestampString --%>
<
telerik:GridBoundColumn
DataField
=
"TimestampString"
HeaderText='<%$Resources:Labels, NewsEntryTimestamp %>'
UniqueName="TimestampString" DataFormatString="{0}" DataType="System.String"
Display="true" Groupable="false">
<
HeaderStyle
Width
=
"50px"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
<
ItemStyle
Wrap
=
"false"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
</
telerik:GridBoundColumn
>
<%--HeaderText --%>
<
telerik:GridBoundColumn
DataField
=
"HeaderText"
HeaderText='<%$Resources:Labels, HeaderText %>'
UniqueName="HeaderText" DataFormatString="{0}" DataType="System.String" Display="true"
Groupable="false">
<
HeaderStyle
Width
=
"330px"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
<
ItemStyle
Wrap
=
"false"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
</
telerik:GridBoundColumn
>
<%--IsActive --%>
<
telerik:GridBoundColumn
DataField
=
"IsActive"
HeaderText='<%$Resources:Labels, IsActive %>'
UniqueName="IsActive" DataFormatString="" DataType="System.Boolean" Display="true"
Groupable="false">
<
HeaderStyle
Width
=
"50px"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
<
ItemStyle
Wrap
=
"false"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
</
telerik:GridBoundColumn
>
<%--ErstellerUserNameVorname --%>
<
telerik:GridBoundColumn
DataField
=
"ErstellerUserNameVorname"
HeaderText='<%$Resources:Labels, ErstellerUserNameVorname %>'
UniqueName="ErstellerUserNameVorname" DataFormatString="{0}" DataType="System.String"
Display="true" Groupable="false">
<
HeaderStyle
Width
=
"170px"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
<
ItemStyle
Wrap
=
"false"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
</
telerik:GridBoundColumn
>
<%--AenderungsUserNameVorname --%>
<
telerik:GridBoundColumn
DataField
=
"AenderungsUserNameVorname"
HeaderText='<%$Resources:Labels, AenderungsUserNameVorname %>'
UniqueName="AenderungsUserNameVorname" DataFormatString="{0}" DataType="System.String"
Display="true" Groupable="false">
<
HeaderStyle
Width
=
"170px"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
<
ItemStyle
Wrap
=
"false"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
</
telerik:GridBoundColumn
>
<%--Aenderungsdatum --%>
<
telerik:GridBoundColumn
DataField
=
"Aenderungsdatum"
HeaderText='<%$Resources:Labels, Aenderungsdatum %>'
UniqueName="Aenderungsdatum" DataFormatString="{0}" DataType="System.String"
Display="true" Groupable="false">
<
HeaderStyle
Width
=
"80px"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
<
ItemStyle
Wrap
=
"false"
HorizontalAlign
=
"Left"
VerticalAlign
=
"Top"
Font-Bold
=
"false"
/>
</
telerik:GridBoundColumn
>
<%--LinkButtonEditCommand--%>
<
telerik:GridTemplateColumn
UniqueName
=
"ColumnEditCommand"
>
<
HeaderStyle
Width
=
"25px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
/>
<
ItemTemplate
>
<
asp:LinkButton
ID
=
"LinkButtonEditCommand"
runat
=
"server"
CommandName
=
"Edit"
ToolTip="<%$Resources:Labels, Edit %>">
<
asp:Image
ID
=
"ImageEditCommand"
runat
=
"server"
ImageUrl
=
"~/App_Themes/Controlling/EditIcon.gif"
/>
</
asp:LinkButton
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<%--LinkButtonDeleteCommand--%>
<
telerik:GridTemplateColumn
UniqueName
=
"ColumnDeleteCommand"
>
<
HeaderStyle
Width
=
"25px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
/>
<
ItemTemplate
>
<
asp:LinkButton
ID
=
"LinkButtonDeleteCommand"
runat
=
"server"
CommandName
=
"Delete"
ToolTip="<%$Resources:Labels, DeleteToolTip %>">
<
asp:Image
ID
=
"ImageDeleteCommand"
runat
=
"server"
ImageUrl
=
"~/App_Themes/Controlling/DeleteIcon.png"
/>
</
asp:LinkButton
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
<
NestedViewTemplate
>
<
uc:NewsDetails
ID
=
"NewsDetails"
runat
=
"server"
/>
</
NestedViewTemplate
>
<
EditFormSettings
UserControlName
=
"NewsCreateUpdate.ascx"
EditFormType
=
"WebUserControl"
>
<
EditColumn
UniqueName
=
"NewsCreateUpdateColumn"
></
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadAjaxPanel
>
<%--DataSources--%>
<
asp:ObjectDataSource
ID
=
"ObjectDataSourceNewsEntries"
runat
=
"server"
SelectMethod
=
"GetNewsEntries"
TypeName
=
"PortalDataServiceWrapper"
/>
</
asp:Content
>
C#
using System;
using System.Web.Services;
using Telekom.Platon.PortalModel;
using Telekom.Platon.Web.Code.Base;
using Telekom.PORTAL.Web;
using Telerik.Web.UI;
public partial class News : AppBasePage
{
protected override ModulEnum ModulId => ModulEnum.AdminNews;
protected static Guid GridID = Guid.Empty;
protected static News n;
protected static RadGrid RGrid;
protected void Page_Load(object sender, EventArgs e)
{
PanelRead.Visible = MayRead;
LabelRead.Visible = !MayRead;
RadScriptManager.RegisterClientScriptInclude(Page.Master, Page.Master.GetType(), "ConfirmRadWindow", ResolveClientUrl("~/Scripts/app/ConfirmRadWindow.js"));
if (!Page.IsPostBack)
DataBind();
}
protected void RadGrid_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == Telerik.Web.UI.RadGrid.ExpandCollapseCommandName)
{
//
// Expand
//
GridDataItem gridDataItem = e.Item as GridDataItem;
string newsEntryIDString = gridDataItem.GetDataKeyValue("NewsEntryID").ToString();
Guid newsEntryID = new Guid(newsEntryIDString);
NewsEntry dataItem = PortalDataService.GetNewsEntry(newsEntryID);
if (!e.Item.Expanded)
{
NewsDetails control = (NewsDetails)gridDataItem.ChildItem.FindControl("NewsDetails");
if (control != null &&
dataItem != null)
{
control.State.FormattedContent = dataItem.FormattedContent;
control.DataBind();
}
}
}
}
protected void RadGrid_InsertCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
NewsCreateUpdate userControl = (NewsCreateUpdate)editedItem.FindControl(GridEditFormItem.EditFormUserControlID);
if (userControl.Timestamp.HasValue) Create(userControl.Timestamp.Value, userControl.HeaderText, userControl.IsActive, userControl.FormattedContent);
}
protected void RadGrid_UpdateCommand(object sender, GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
NewsCreateUpdate userControl = (NewsCreateUpdate)editedItem.FindControl(GridEditFormItem.EditFormUserControlID);
Guid newsEntryID = GridUtil.GetValue<
Guid
>("NewsEntryID", e);
if (userControl.Timestamp.HasValue) Update(newsEntryID, userControl.Timestamp.Value, userControl.HeaderText, userControl.IsActive, userControl.FormattedContent);
}
protected void RadGrid_DeleteCommand(object sender, GridCommandEventArgs e)
{
GridID = GridUtil.GetValue<
Guid
>("NewsEntryID", e);
RGrid = this.RadGrid;
n = this;
if (Page.IsValid)
{
confirmWindow.RadConfirm("Sind Sie sicher das diese News gelöscht werden soll?", "confirmCallBackFn", 330, 180, null, "Newsmeldung löschen?");
}
}
private void Create(DateTime timestamp, string headerText, bool isActive, string formattedContent)
{
if (Page.IsValid)
{
string userID = SecurityService.GetUserID();
NewsEntry newsEntry = NewsEntry.Create(timestamp, headerText, isActive, userID);
if (newsEntry != null)
{
newsEntry.FormattedContent = formattedContent;
string message = string.Empty;
PortalDataService.CreateNewsEntry(newsEntry, out message);
RadGrid.DataBind();
RadGrid.CurrentPageIndex = 0;
}
}
}
private void Update(Guid newsEntryID, DateTime timestamp, string headerText, bool isActive, string formattedContent)
{
if (Page.IsValid)
{
string userID = SecurityService.GetUserID();
NewsEntry newsEntry = PortalDataService.GetNewsEntry(newsEntryID);
if (newsEntry != null)
{
newsEntry.Timestamp = timestamp;
newsEntry.HeaderText = headerText;
newsEntry.FormattedContent = formattedContent;
newsEntry.IsActive = isActive;
newsEntry.Aenderungsdatum = DateTime.Now;
newsEntry.AenderungsUserID = userID;
PortalDataService.UpdateNewsEntry(newsEntry);
RadGrid.DataBind();
}
}
}
[WebMethod]
public static void Delete(bool? UserReponse)
{
if (GridID != Guid.Empty && UserReponse.Equals(true))
{
PortalDataService.DeleteNewsEntry(GridID);
RGrid.DataBind();
}
}
}
Any Ideas what i can do?
Regards Michael