簡體   English   中英

asp:LinkBut​​ton,如何取消OnClick事件?

[英]asp:LinkButton, how to cancel OnClick event?

我已經搜索了幾個小時,但我迷路了。

什么方法可以從asp:LinkBut​​ton命令取消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字段驗證器並使用它。

例子

  1. 如何在GridView文本框內放置所需的字段驗證器
  2. 如何將RequiredFieldValidator添加到DropDownList控件?

或在客戶端單擊上創建javascript或jQuery函數,然后檢查下拉值並進行驗證。

UPDATE

我決定完全放棄OnClick()事件,並使用DetailView的DataBound事件捕獲條件。 然后,我從下拉列表中檢查了值,並根據需要簡單地隱藏/顯示LinkBut​​ton控件。

即:

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM