这与我最近的一篇文章类似,但由于我解决了部分问题,所以我将其作为单独的问题重新发布。我有一个带有 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 属性设置正确,但在第一次传递时,如果参数为真,它始终保持灰色。有谁知道是什么原因造成的?