更新および削除機能とともにレコードのリストを表示している Telerik Grid コントロールを使用しています。
ユーザーが誤ってレコードを削除しないように、レコードを削除するときに確認ボックスを表示したいと思います。
だからここに私のアプローチがあります:
1)マスターページが1つあります。つまり、確認ボックス用の共通のクライアント側イベントが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)すべてのページが継承され、このページにRadAjaxManager2_AjaxRequest
存在する親ページを1つ作成しました。これにより、このメソッドですべてのページを汚染する必要がなくなり、このメソッドはすべてのページで削除機能を処理する責任があります。 :
このメソッドでは、delete メソッドの名前を 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)データベースとbindgridviewからレコードを削除する削除機能を配置するAbc.aspxのマイページ:
<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メソッドを呼び出していますページであり、それは不適切だと思います。
だから私はこれを克服したい.削除機能を適切に設定するには???