Я использую элемент управления сетью Telerik, в котором я показываю список записей вместе с функцией обновления и удаления.Как правильно настроить функцию удаления с помощью radajaxmanager с полем подтверждения?
Теперь я хочу показать окно подтверждения при удалении записей, чтобы пользователь случайно не удалил запись.
Так вот мой подход:
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.
}
}
}
все это работает идеально, но проблема в том, как мы все знаем, что, когда мы наследуем дочернюю страницу из родительской страницы, то мы называем родительский метод страницы из метода ребенка страницы, но вот в моем случае это противоположно e, то есть я вызываю мой метод RemoveRecord с родительской страницы, и это я считаю неуместным.
Так что я хочу преодолеть это. Как правильно настроить мою функцию удаления ???
ОК, я согласен с тем, что вы говорите, но поскольку мои DeleteData и RadAjaxManager2_AjaxRequest были бы такими же, поэтому я должен загрязнять каждую страницу этим методом одним и тем же кодом ??? –
Каждая дочерняя страница будет иметь свои собственные элементы управления, так почему бы DeleteData быть одинаковым для всех дочерних страниц? Кроме того, каждая дочерняя страница будет выполнять запрос ajax в соответствии со своими собственными требованиями, так почему же должен быть выполнен один и тот же запрос ajax для всей дочерней страницы? Вы думаете, что все одинаково для всех дочерних страниц. – Sunil
С другой стороны, 'если все дочерние страницы имеют одинаковые функции удаления ', вы можете поместить это в класс ParentPage, так как это избавит вас от повторения кода. Но трудно поверить, что функциональность удаления будет одинаковой для всех веб-страниц. Я никогда не сталкивался с таким сценарием. – Sunil