0

这与我最近的一篇文章类似,但由于我解决了部分问题,所以我将其作为单独的问题重新发布。我有一个带有 Ajax 组合框的 ASP.Net 应用程序。当触发下拉列表的 OnSelectedIndexChanged 事件时,将调用服务器端方法 FindEmpInfo。FindEmpInfo 做了一些事情,然后调用方法 EnableDeviceInfo。所以,像这样:

protected void FindEmpInfo(object sender, EventArgs e)
    {
        DeviceInfo = findEmpInfo(ddlEmpName.SelectedValue,"","");
        DisplayDeviceInfo(DeviceInfo);
        if (ddlStatus.SelectedValue != "0")
            EnableDeviceInfo(false);
        else
            EnableDeviceInfo(true); //only enables on second call ???
        tbEmpName.Text = "";
    }

    protected void EnableDeviceInfo(bool enabled)
    {
        cbIMEI.Enabled = enabled;
        cbPhoneNumber.Enabled = enabled;
        rblCarrier_SP.Enabled = enabled;
        ddlModel.Enabled = enabled;
        rblSize.Enabled = enabled;
        rblColor_SP.Enabled = enabled;
        tbAssignedDate.Enabled = enabled;
        ddlScenario.Enabled = enabled;
        rblSplitBilling.Enabled = enabled;
        rblPhoneCombined_SP.Enabled = enabled;
        tbComments.Enabled = enabled;
        btnSubmit.Enabled = enabled;
    }

调用 FindEmpInfo 的 aspx 控件是 ddlEmpName:

<asp:TableCell runat="server" >
        <asp:Label runat="server" Text="Employee Name: " Font-Bold="true" />
        <asp:DropDownList runat="server" ID="ddlEmpName" OnSelectedIndexChanged="FindEmpInfo" AutoPostBack="true" />
    </asp:TableCell>

组合框看起来像这样:

<asp:TableCell ID="TableCell3" runat="server">
                        <asp:Label ID="Label2" runat="server" Text="IMEI: " Font-Bold="true" />
                        <asp:ComboBox ID="cbIMEI" runat="server" OnSelectedIndexChanged="ChangeDataForIMEI" AutoPostBack="true">
                        </asp:ComboBox>
                    </asp:TableCell>

这工作正常,除了第一次调用 EnableDeviceInfo 并将其参数设置为 true 时 ComboBox 的状态未启用。启用 ComboBox 需要两次调用。但是,如果参数为 false,它会第一次起作用。我已经通过调试器运行了这段代码,并且参数始终设置为正确的值,并且我看到 Enabled 属性设置正确,但在第一次传递时,如果参数为真,它始终保持灰色。有谁知道是什么原因造成的?

4

0 回答 0