Реализация события команды удаления данных из Datalist с использованием методов страницы
У меня есть DataList и панель обновлений на моей странице. После внедрения я проверил, что ответ говорит очень долго после использования панелей обновления... Вот учебный материал. У меня есть событие Delete Command в Datalist, и в вышеупомянутом случае работает находка. Я пытался реализовать команду удаления с помощью методов страницы. Любая идея, как это сделать?
Я в основном хочу найти скрытые элементы управления в этом событии и должен удалить запись в базе данных. Любая помощь будет высоко оценена.
1 ответ
Услуги Отдыха
Полное приложение можно скачать с:
В этом примере используются службы отдыха в ASP.Net (те же понятия могут применяться к приложению MVC).
Более очевидным преимуществом использования служб отдыха перед методами страниц является возможность тестирования.
Я проведу вас шаг за шагом, чтобы настроить сервис:
Вам нужны следующие ссылки:
- System.Web.ServiceModel.dll
- System.Web.ServiceModel.Activation.dll
- System.Web.ServiceModel.Web.dll
Пакеты Nuget:
Плагины jQuery:
- Пользовательский интерфейс jQuery Block (доступен в виде одного файла скрипта)
Сервисная информация
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebInvoke(
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "/DeleteFromService",
Method = "DELETE")]
void Delete(int id);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService
{
public void Delete(int id)
{
// delete your product
// simulate a long process
Thread.Sleep(5000);
}
}
В Global.asax
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");
RouteTable.Routes.Add(new ServiceRoute("",
new WebServiceHostFactory(),
typeof(MyService)));
}
В web.config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true"
automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Зарегистрировать скрипты (их можно зарегистрировать на главной странице)
<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js" language="javascript" ></script>
<script language="javascript" type="text/javascript" src="Scripts/jquery.blockui.1.33.js"></script>
На странице содержимого ASP.Net (в этом примере я использую главную страницу)
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<input type="button" value="Delete" id="myButton" />
</asp:Content>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" language="javascript">
function deleteFromService() {
if (!confirm("Are you sure you want to delete?")) {
return;
}
$.blockUI();
$.ajax({
cache: false,
type: "DELETE",
async: true,
url: "/DeleteFromService",
data: "3", // get your id to delete
contentType: "application/json",
dataType: "json",
success: function () {
$(document).ajaxStop($.unblockUI);
alert("done");
},
error: function (xhr) {
$(document).ajaxStop($.unblockUI);
alert(xhr.responseText);
}
});
}
jQuery().ready(function () {
$("#myButton").click(deleteFromService);
});
</script>
</asp:Content>
И это все, ajax командует легким путем =)