启用/禁用Ajax Combobox第一次不工作,第二次工作

时间:2013-08-27 20:02:50

标签: c# asp.net ajax combobox

这与我最近的一篇文章相似,但由于我解决了部分问题,我将其重新发布为一个单独的问题。我有一个带有Ajax ComboBox的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>

,ComboBox看起来像这样:

<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>

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

0 个答案:

没有答案