У меня есть требование выполнить некоторое логическое выполнение после изменения значения dropdownlist. Перед выполнением логики мне нужно принять подтверждение пользователя, а затем вызвать метод стороны на стороне сервера, чтобы завершить процесс. Не уверен. Как вызвать метод на стороне сервера, основанный на модальном всплывающем подтверждении от пользователя. Поэтому, если пользователь подтверждает с помощью кнопки "Да" на модальном всплывающем сервере, код должен быть вызван иначе, ничего не делать.
Вот код, который у меня есть. На стороне сервера не вызывается модальное всплывающее подтверждение.
function PopupDialog(title, text) {
var div = $('<div>').html('<br>'+text).dialog({
title: title,
modal: true,
height: 190,
width: 320,
buttons: {
"Yes": function () {
$(this).dialog('close');
},
"No": function () {
$(this).dialog('close');
}
}
});
return true;
};
<asp:GridView runat="server" ID="grdTransactions" SkinID="gridviewskin"
AllowSorting="true" AllowPaging="true" PageSize="30" Width="100%"
OnRowDataBound="grdTransactions_RowDataBound"
OnDataBound="grdTransactions_DataBound"
OnSelectedIndexChanged="grdTransactions_SelectedIndexChanged">
.............
<asp:TemplateField Visible="true" HeaderText="Status" >
<ItemTemplate>
<asp:Label runat="server" ID="lblStatus" Visible="False" Text='<%# ShowStatus( Container.DataItem ) %>' />
<asp:DropDownList ID="ddlTransactionList" AutoPostBack="True" OnSelectedIndexChanged="ddlTransactionList_SelectedIndexChanged" onchange="return PopupDialog('Remittance Confirmation','Are you sure you want to update the status?.');" runat="server"></asp:DropDownList>
<br/>
</ItemTemplate>
</asp:TemplateField>
Ниже приведен код сервера:
protected void ddlTransactionList_SelectedIndexChanged(object sender,
EventArgs e)
{
//Your Code
if (OnDataChanged != null)
OnDataChanged(sender, e);
}
Проверьте сгенерированный HTML-код своей страницы и посмотрите на раскрывающийся список. Он должен выглядеть так:
<select name="gridView$ctl02$ddlTransactionList" onchange="return PopupDialog('Remittance Confirmation','Are you sure you want to update the status?.');setTimeout('__doPostBack(\'gridView$ctl02$ddlTransactionList\',\'\')', 0)" id="gridView_ddlTransactionList_0">
Проблема заключается в том, что вы "возвращение" результат вашей PopupDialog так что __doPostback
функция (AutoPostBack) не имеет шансов получить называется. Мой совет: возвращайтесь только в том случае, если пользователь отклонил это изменение. Если пользователь согласен, ничего не вернет.
Редактировать (забыл опубликовать код решения)
<asp:DropDownList ID="ddlTransactionList" AutoPostBack="True" OnSelectedIndexChanged="ddlTransactionList_SelectedIndexChanged" onchange="if(! PopupDialog('Remittance Confirmation','Are you sure you want to update the status?.')){return false;}" runat="server"></asp:DropDownList>