[英]asp:LinkButton, how to cancel OnClick event?
我已經搜索了幾個小時,但我迷路了。
有什么方法可以從asp:LinkButton命令取消OnClick()事件嗎?
我有以下客戶端代碼:
<asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Delete" OnInit="SetVisibility" OnClientClick="return confirm('Are you sure?');" Text="Delete" OnClick="LinkButton3_Click"></asp:LinkButton>
因此,OnClick()事件的服務器端代碼是...
//Trap the delete button
protected void LinkButton3_Click(object sender, EventArgs e)
{
try
{
if (ListBox1.SelectedItem.Text == "** NO SCHOOL RECORDED **")
throw new Exception("You cannot delete this entry, as it's the default for every student until a School is selected in Basic Enrolments.");
}
catch (Exception exc)
{
webMessageBox.Show(exc.Message);
return;
}
}
如您所見,如果我的代碼中的下拉列表具有特定的文本,則我想中止Delete命令。
Return;
語句不執行任何操作。 記錄仍被刪除!
因為沒有e.Cancel方法,有沒有辦法中止此事件?
我已經讀過[this] [1]和[this] [2],但無濟於事。 關於無法取消此事件的建議,使我認為也許應該在數據綁定事件中中止刪除? 甚至更好的是,如果用戶選擇上述下拉文本,如何隱藏“刪除”鏈接按鈕?
提前致謝。
謝謝
而不是在服務器端進行操作,您可以在客戶端進行操作。 您可以使用require字段驗證器並使用它。
例子
或在客戶端單擊上創建javascript或jQuery函數,然后檢查下拉值並進行驗證。
UPDATE
我決定完全放棄OnClick()事件,並使用DetailView的DataBound事件捕獲條件。 然后,我從下拉列表中檢查了值,並根據需要簡單地隱藏/顯示LinkButton控件。
即:
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
LinkButton lnk1 = (LinkButton)DetailsView1.FindControl("LinkButton1");
LinkButton lnk2 = (LinkButton)DetailsView1.FindControl("LinkButton2");
LinkButton lnk3 = (LinkButton)DetailsView1.FindControl("LinkButton3");
if (ListBox1.SelectedItem.Text == "** NO SCHOOL RECORDED **")
{
if (lnk1 != null) lnk1.Visible = false;
if (lnk2 != null) lnk2.Visible = false;
if (lnk3 != null) lnk3.Visible = false;
}
else
{
if (lnk1 != null) lnk1.Visible = true;
if (lnk2 != null) lnk2.Visible = true;
if (lnk3 != null) lnk3.Visible = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.