簡體   English   中英

確定是否在ASP.NET中選中了CheckBox

[英]Determine if CheckBox is checked in ASP.NET

我有問題確定在我的ASP.NET網頁構建中是否選中了復選框。 當我在Page_Load方法中渲染網頁時,我使用以下代碼檢查一些復選框:

checkbox1.Checked = true;

在頁面上我有按鈕來處理表格中的數據,點擊這個按鈕我檢查復選框是否被選中:

if(checkbox1.Checked == true)
{
    //do something
} else {
    //do something else
}

但是我發現從Checked屬性獲得的值總是與我在第一步中設置的值相同。 該屬性永遠不會返回CheckBox當前狀態的值。 這是我的問題:為什么?

我通過以不同的方式設置檢查來繞過該問題:

checkbox1.Attributes.Add("checked","true");

我不喜歡什么時候有效,但我不知道為什么這樣,請告訴我什么是我的誤解。

在你的Load事件中,你可能錯過了IsPostBack部分,所以它每次都會執行並最終重寫你的值。

protected void Page_Load(object sender, EventArgs e)
{
      if (!IsPostBack)
      {
           // do initial initialization here
      }

      // this happens even during a postback
}

你知道Page_Load在每次回發后運行,然后才能執行你的控件事件處理程序,比如Button_Click嗎? 您可能每次加載頁面時都會重置值。 您應該在if語句中編寫初始化代碼,以確保不會覆蓋已發布的值。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        checkbox1.Checked = true;
    }
}

也,

if(checkbox1.Checked == true)
{
    //do something
} else {
    //do something else
}

由於checkbox1.Checked值已經是布爾值,因此無需將其與true進行比較。 當你口頭閱讀代碼時,就像是說“如果選中了復選框,那么我之前說過的陳述是真的”。 您可以縮短它,使其更像“如果選中該復選框”。

if(checkbox1.Checked)
{
    //do something
} else {
    //do something else
}

暫無
暫無

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

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