簡體   English   中英

asp.net復選框事件未觸發

[英]asp.net checkbox event not firing

我在表單上有一個復選框:

<asp:CheckBox ID="CheckBox1" runat="server"
Visible="true" AutoPostBack="True" oncheckedchanged="CheckBox1_CheckedChanged" />

當我選中或取消選中它時,它不會觸發下面的事件。

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    if (CheckBox1.Checked)
    {
        preContactTextBox.Visible = true;
        prePracticeCodeTextBox.Visible = true;            
    }
    else
    {
        preContactTextBox.Visible = false;
        prePracticeCodeTextBox.Visible = false;            
    }
}

它根本沒有進入這個活動。 我做錯了什么?

這是完整的代碼:

http://pastebin.com/amQURr91

我如何才能解雇它?

僅當復選框的AutoPostBack屬性指定值為“true”時,才會引發Checkbox控件的CheckedChanged事件。

我會檢查以確保您沒有在阻止事件觸發的地方進行驗證。 我沒有看到代碼有任何問題,因此驗證是下一個最可能的罪魁禍首。

<asp:CheckBox ID="CheckBox1" runat="server" CausesValidation="false" ... />

我認為由於你正在使用的niceforms插件,回發沒有觸發。 該插件似乎覆蓋了復選框的默認功能。

要測試是否嘗試從表單標記中刪除class="niceform"屬性。

由於smartforms覆蓋onclick事件,據我所知,解決此問題的唯一方法是通過將inputCheck函數替換為以下來修改niceforms插件的源代碼。 我測試了這個,它對我有用。

function inputCheck(el) { //extend Checkboxes
    el.oldClassName = el.className;
    el.dummy = document.createElement('img');
    el.dummy.src = imagesPath + "0.png";
    if (el.checked) { el.dummy.className = "NFCheck NFh"; }
    else { el.dummy.className = "NFCheck"; }
    el.dummy.ref = el;
    if (isIE == false) { el.dummy.style.left = findPosX(el) + 'px'; el.dummy.style.top = findPosY(el) + 'px'; }
    else { el.dummy.style.left = findPosX(el) + 4 + 'px'; el.dummy.style.top = findPosY(el) + 4 + 'px'; }
    el.dummy.onclick = function () {
        //Set the checked state of the checkbox
        this.ref.checked = this.ref.checked ? false : true;
        //Fire the postback
        this.ref.click();
        if (!this.ref.checked) {
            this.ref.checked = true;
            this.className = "NFCheck NFh";
        }
        else {
            this.ref.checked = false;
            this.className = "NFCheck";
        }
    }
    el.onfocus = function () { this.dummy.className += " NFfocused"; }
    el.onblur = function () { this.dummy.className = this.dummy.className.replace(/ NFfocused/g, ""); }
    el.init = function () {
        this.parentNode.insertBefore(this.dummy, this);
        el.className = "NFhidden";
    }
    el.unload = function () {
        this.parentNode.removeChild(this.dummy);
        this.className = this.oldClassName;
    }
}

希望這可以幫助。

一個建議是將復選框存儲在tempcheck框中,並檢查tempcheck是true還是false。 如果此復選框位於已形成的位置,那么您需要在該字段上進行直播並查找控件。 受保護的子ckbCheckBox_CheckedChanged(ByVal發送者作為對象,ByVal e As System.EventArgs)Dim tempChk作為CheckBox嘗試tempChk = DirectCast(YourFormView.FindControl(“ckbCheckBox”),CheckBox)如果tempChk.Checked = True那么'做其他什么其他做什么結束如果

    Catch ex As Exception
        lblErrorMessage.Text = " Error occurred during ckbCheckBox.  Following are the errors: <br> " & ex.ToString
    End Try

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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