【问题标题】:Checkbox is not checked on postback ASP NET回发 ASP NET 上未选中复选框
【发布时间】:2016-09-23 22:48:49
【问题描述】:

我有一个 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());
        }
    }
}

【问题讨论】:

  • 您是否在Page_Load 中填充中继器?如果是这样,请确保它在 if (!IsPostBack) 条件内。
  • @ConnorsFan - 这是我的问题的解决方案!

标签: c# asp.net checkbox postback


【解决方案1】:

尝试替换

<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());
        }
    }
}

【讨论】:

  • 这仍然无法按预期工作。该值被添加到复选框控件,但它永远不会设置为“选中”。我有一种感觉,repeateritem(在这种情况下是复选框)不会更新 checked 的属性?
  • @Thugge 你在使用更新面板吗?
  • 不,我没有使用更新面板。
【解决方案2】:

在您的 Page_Load 事件中的逻辑周围放置一个“!Page.IsPostback”条件。可能发生的情况是您的按钮导致回发,并且 page_load 在按钮单击事件触发之前重新加载您的默认(未选中)值。

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2011-12-11
    • 1970-01-01
    • 2010-11-13
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多