簡體   English   中英

在回發ASP NET上未選中復選框

[英]Checkbox is not checked on postback ASP NET

我有一個asp.net項目,讓我們稱之為對象。 所有對象都在轉發器中創建:

<section class="topbar">
    <asp:Button runat="server" ID="btnSave" OnClick="btnSave_OnClick" Text="Save" />
</section>

<asp:Repeater runat="server" id="gwList">
    <ItemTemplate>
        <div class="block">
            <input type="checkbox"  runat="server" ID="chkObjectSelected" value='<%# ((Object.Object)Container.DataItem).Id %>'/> 

            <label><%# ((Object.object)Container.DataItem).Title %></label>

        </div>
    </ItemTemplate>
</asp:Repeater>

問題出現了,所有選定對象都不會在回發中設置為選中狀態。 這是我用來確定是否檢查對象的代碼:

protected void btnSave_OnClick(object sender, EventArgs e)
{   
    List<string> objectIdSelected = new List<string>(); 

    foreach (RepeaterItem oneObject in gwList.Items)
    {
        HtmlInputCheckBox chkObj = (HtmlInputCheckBox)carAd.FindControl("chkObjectSelected");

        if (chkObj.Checked)
        {
            objectIdSelected.Add(chkObj.Value.ToString());
        }
    }
}

嘗試更換

<input type="checkbox"  runat="server" ID="chkObjectSelected" value='<%# ((Object.Object)Container.DataItem).Id %>'/> 

有了這個

 <asp:CheckBox runat="server" ID="chkObjectSelected" Value='<%# ((Object.Object)Container.DataItem).Id %>'/> 

並將您的代碼更改為:

protected void btnSave_OnClick(object sender, EventArgs e)
{
    List<string> objectIdSelected = new List<string>();

    foreach (RepeaterItem oneObject in gwList.Items)
    {
        CheckBox chkObj = (CheckBox)oneObject.FindControl("chkObjectSelected");

        if (chkObj.Checked)
        {
            objectIdSelected.Add(chkObj.Attributes["Value"].ToString());
        }
    }
}

在Page_Load事件中的邏輯周圍放置一個“ !Page.IsPostback ”條件。 可能發生的是您的按鈕導致回發,並且page_load在按鈕單擊事件觸發之前重新加載默認(未選中)值。

暫無
暫無

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

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