これは私の最近の投稿と似ていますが、問題の一部が解決したので、別の問題として再投稿します。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>
これは正常に機能しますが、パラメーターを true に設定して EnableDeviceInfo を初めて呼び出したときに ComboBox のステータスが有効にならないことを除きます。ComboBox を有効にするには、2 つの呼び出しが必要です。ただし、パラメーターが false の場合は、初めて機能します。このコードをデバッガーで実行したところ、パラメーターは常に正しい値に設定され、Enabled プロパティも正しく設定されていますが、パラメーターが true の場合、最初のパスでは常にグレー表示のままです。誰がこれを引き起こしているのか知っていますか?