【问题标题】:Checkbox state not changed on postback回发时复选框状态未更改
【发布时间】:2016-01-15 23:49:35
【问题描述】:

我对用户控件 (.ascx) 进行了以下标记

<table>
<tr>
    <td>
        <asp:Label ID="Label1" runat="server" Text="Select Logical Symbol to Search:"></asp:Label>
    </td>
    <td>
        <asp:DropDownList ID="ddlComponentType" runat="server" 
            onselectedindexchanged="ddlComponentType_SelectedIndexChanged" AutoPostBack="true">
        </asp:DropDownList>
    </td>
    <td>
        <asp:CheckBox ID="chkAdvSearchAllLibs" runat="server" ToolTip="Check this box to search all available libraries" Text="Search All Libraries"/>
    </td>
</tr>
<tr>
    <td>
        <asp:Label ID="Label2" runat="server" Text="Search by Logical Symbol Properties:"></asp:Label>
    </td>
    <td>
    </td>
</tr>

在页面加载

protected void Page_Load(object sender, EventArgs e)
{
     SearchResults(ref attributeSearch, compTypeID);
}

SearchResults 在哪里

 private void SearchResults(ref string attributeSearch, int compTypeID)
    {
        DataTable dtResults = this.AdvancedSearchControl.GetSearchResults(ref attributeSearch, compTypeID);
    }

在我的 UserControl.ascx.cs 中

public DataTable GetSearchResults(ref string _attrVals, int compTypeID)
{
                //Other Logic Goes Here
                IEnumerable<Model.ComponentInfo.ComponentType> compTypeResult = from compTypes in BLLibrary.GetComponentTypeBasedOnLib(this.CurrentLibraryId, this.CurrentLibrary, this.chkAdvSearchAllLibs.Checked) select compTypes.Value;
}

this.chkAdvSearchAllLibs.Checked 始终为 false,无论 check-box 是否在页面上被选中并回发。

【问题讨论】:

    标签: c# asp.net checkbox postback


    【解决方案1】:

    服务器端:

    将 AutoPostBack="True" 添加到复选框。它没有回发。

    客户端:

    <asp:CheckBox runat="server" ID="cb" onclick="checkboxchanged(this);" />
    
    function checkboxchanged( sender ) {
    if ( sender.checked ) {
            // clicked and checked
        } else {
            // clicked and unchecked
        }
    }
    

    【讨论】:

    • 我不想在每次复选框状态发生变化时重新加载页面,因此我没有设置该道具。但是现在的方式应该可以工作。我在这里错过了什么??:(
    • 如果您不希望整个页面回发,请将其放在更新面板中。没有回发就无法触发事件。
    • 正确,我知道 UpdatePanel 是一个选项(基本上可以解决)。我正在检查 Postback 上的复选框状态,其中 Checkbox 的状态应该是正确的。除了没有页面重新加载(ajax)之外,即使 UpdatePanel 也会发回我的问题是为什么它一开始就不起作用。我想了解我缺少的东西。
    • 所以您不希望复选框触发命令,您希望 DDL 检查其 selectedindexchanged 事件的复选框状态。对吗?
    • 是的,基本上在 ascx.cs 文件中,我有一个基于复选框的选中/未选中值的逻辑。this.MyUserControl.chkAdvSearchAllLibs.Checked 总是返回 false
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多