这与我最近的一篇文章相似,但由于我解决了部分问题,我将其重新发布为一个单独的问题。我有一个带有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,它始终保持灰色。有谁知道造成这种情况的原因是什么?