我正在使用 Telerik Grid 控件,其中显示记录列表以及更新和删除功能。
现在我想在删除记录时显示确认框,以免用户意外删除记录。
所以这是我的方法:
1)我有一个母版页,即MyMaster.Master,其中包含一个用于确认框的常见客户端事件,我将为此使用 sweetalert:
function DeleteData(Id) {
var ajaxManager = null;
var action = 'Remove';
ajaxManager = $find("ctl00_cphMain_RadAjaxManager2");
var arg = action + "," + Id; //Remove,1(1 indicates id of record to remove from grid)
ajaxManager.ajaxRequest(arg);This line will fire below method.
}
2)我创建了 1 个父页面,我的所有页面都将从该页面继承,并且我RadAjaxManager2_AjaxRequest
将驻留在此页面上,这样我就不必使用此方法污染我的每个页面,并且此方法将负责处理我在每个页面上的删除功能:
在此方法中,我会将删除方法的名称传递给 fire.For 例如:Remove1
public class ParentPage : RadAjaxPage
{
protected void RadAjaxManager2_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
var stringArray = e.Argument.Split(",".ToCharArray());//[0]="Remove1",[1]=id of record to delete
RemoveRecord( stringArray[0], stringArray[1]);
}
}
3)我的页面是 Abc.aspx,我将在其中放置删除功能以从数据库和 bindgridview 中删除记录:
<telerik:RadAjaxManager ID="RadAjaxManager2" runat="server" OnAjaxRequest="RadAjaxManager2_AjaxRequest">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager2">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Grid1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<ItemTemplate>
<asp:ImageButton runat="server" ID="Remove1" Text="Delete" OnClientClick='<%# Eval("Id", "javascript:return DeleteData(\"{0}\");") %>' />
</ItemTemplate>
public partial class Abc : ParentPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void RemoveRecord( buttonId, recordId)
{
if(buttonId== "Remove1")
{
//code to delete record with id of recordId
//Bind grid view again to display latest records after performing deletion.
}
}
}
所有这一切都很完美,但问题是我们都知道,当我们从父页面继承子页面时,我们会从子页面方法调用父页面方法,但在我的情况下,这是相反的,我是从父页面调用我的RemoveRecord方法页面,我认为这是不合适的。
所以我想克服这个问题。如何正确配置我的删除功能???