如何使用带有确认框的radajaxmanager正确配置删除功能
本文关键字:配置 删除 功能 radajaxmanager 何使用 确认 | 更新日期: 2023-09-27 18:36:23
我正在使用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
将驻留,这样我就不必使用此方法污染我的每个页面,并且此方法将负责处理每个页面上的删除功能:
在此方法中,我将传递要触发的删除方法的名称。例如:删除1
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.
}
}
}
所有这些都工作得很好,但问题是众所周知,当我们从父页面继承子页面时,我们从子页面方法调用父页面方法,但在我的情况下,这与我调用的相反我的 从父页面删除记录 方法,那就是我认为这是不合适的。
所以我想克服这一点。如何正确配置我的删除功能???
代码的问题在于混淆了父类、子类和母版页的代码。如果代码实际上属于子类,则将其放在父类或母版页中,这是一种糟糕的编程实践,肯定会引起很多问题和错误。此外,您的代码将非常困难且无法维护。
由于您的子页面中有RadAjaxManager,即 ABC.aspx
,因此事件RadAjaxManager2_AjaxRequest应放置在子页面而不是父页面中。您已将此事件放置在父类中,即ParentPage
类中。 The reason for this is explained in detail in paragraph below.
此外,JavaScript 方法 DeleteData(Id) 不应位于母版页中,而应位于实际的子页中,因为调用此方法是为了响应单击子页上的删除按钮。
在面向对象编程中必须遵循的规则之一是,一个类应该只做它应该做的事情,不应该做其他类负责的事情。在您的情况下,ParentPage
类应仅包含为子类提供基本功能的代码,而不应包含实际上是子类功能的代码。具体来说,delete
功能是子类而不是父类的责任,因此删除功能的所有代码都应位于子类中,并且RadAjaxManager
是子类的一部分,因此与RadAjaxManager
相关的所有代码(包括事件RadAjaxManager2_AjaxRequest都应位于子类中,而不是父类中。
这样做将允许您在子页面中编写删除功能,并且不违反面向对象编程的原则。这将使您和其他程序员可以轻松维护您的代码,并且您将最大限度地减少错误,因为您的代码将干净且易于遵循。