C#, ASP.NET: как получить окно подтверждения сообщения из кода на стороне сервера при выполнении условия
Привет,
У меня есть кнопка на моей странице, которая используется для сохранения данных gridview, которые динамически заполняются. Перед сохранением я хочу проверить некоторые условия. Функция javascript выглядит следующим образом:
<script type="text/javascript"> function Confirm() { var confirm_value = document.createElement("INPUT"); confirm_value.type = "hidden"; confirm_value.name = "confirm_value"; if (confirm("This will completely delete the project. Are you sure?")) { confirm_value.value = "Yes"; } else { confirm_value.value = "No"; } document.forms[0].appendChild(confirm_value); } </script> <asp:Button runat="server" ID="lnkBtn" onClick="lnkBtn_Click" onClientClick="Confirm()"></button>
Код, стоящий за этим, выглядит следующим образом:
protected void lnkBtn_Click(object sender, EventArgs e) { string str=gdView.HeaderRow.Cells[8].Text; System.Web.UI.WebControls.TextBox txtID = (System.Web.UI.WebControls.TextBox)gdView.Rows[0].Cells[8].FindControl(str); if (txtID.Text != "") { string confirmValue = Request.Form["confirm_value"]; if (confirmValue == "Yes") { MyAlert("Yes clicked"); } else { MyAlert("No clicked"); } } else { MyAlert("No Text found."); } }
Теперь проблема заключается в том, что поскольку у меня есть функция Confirm() в событии onClientClick, диалоговое окно подтверждения появляется в тот момент, когда пользователь нажимает кнопку, которая на самом деле не предназначена, вместо этого она должна появляться только тогда, когда строка найдена в txtID.
Что я уже пробовал:
Я попытался изменить код, удалив событие onClientClick следующим образом:
<asp:Button runat="server" ID="lnkBtn" onClick="lnkBtn_Click" ></button>
protected void lnkBtn_Click(object sender, EventArgs e) { string str=gdView.HeaderRow.Cells[8].Text; System.Web.UI.WebControls.TextBox txtID = (System.Web.UI.WebControls.TextBox)gdView.Rows[0].Cells[8].FindControl(str); if (txtID.Text != "") { this.Page.ClientScript.RegisterStartupScript(this.GetType(), "confirm", "Confirm();", true); string confirmValue = Request.Form["confirm_value"]; if (confirmValue == "Yes") { MyAlert("Yes clicked"); } else if (confirmValue == "No") { MyAlert("No clicked"); } } }
Здесь также он не работает должным образом. ConfirmValue получает значение, но использует его только при последующем нажатии кнопки. Он не передает значение, сохраненное во время текущего события щелчка, вместо этого ранее сохраненное значение передается в блок if. Пожалуйста, помогите найти, что я должен сделать, чтобы все было правильно.
Спасибо.