0
當CascadingDropDown索引更改時,我無法更新asp.net標籤。請參閱下面的代碼。當CascadingDropDown selectedindex發生變化時,ASP.NET標籤不會更新
ASPX代碼:
<asp:DropDownList ID="ddl1" runat="server"></asp:DropDownList>
<asp:DropDownList ID="ddl2" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddl2IndexChanged"></asp:DropDownList>
<asp:UpdatePanel>
<ContentTemplate>
<asp:Label ID="lbl1" Text="HelloWorld" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl2" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:DropDownList ID="ddl3" runat="server"></asp:DropDownList>
<ajaxToolKit:CascadingDropDown ID="cdd1" runat="server" Category="MachineType"
TargetControlID="ddl2" ParentControlID="ddl1" PromptText="Select Machine Type"
LoadingText="Loading Machine Types" ServicePath="CascadingDropDown.asmx"
ServiceMethod="getMachineTypes"></ajaxToolKit:CascadingDropDown>
<ajaxToolKit:CascadingDropDown ID="cdd2" runat="server" Category="Machine"
TargetControlID="ddl3" ParentControlID="ddl2" PromptText="Select Machine"
LoadingText="Loading Machines" ServicePath="CascadingDropDown.asmx"
ServiceMethod="getMachines"></ajaxToolKit:CascadingDropDown>
後面的代碼:
protected void ddl2_SelectedIndexChanged(object sender, EventArgs e)
{
lbl1.Text = DateTime.Now.ToString();
}
AutoEventWireup是真實的。 EnableEventValidation爲true。 ValidateRequest是真實的。 EnablePageMethods是真的。 EnablePartialRendering是true。 AutoPostBack的ddl2是真的。 DropDownns得到完美更新。但標籤沒有。 ddl2的SelectedIndexChanged不會觸發。我猜是因爲CascadingDropDown。
我也嘗試編寫一個靜態WebMethod並從JavaScript調用它。
在後面的代碼:
[WebMethod]
public static void UpdateLabel()
{
Page page = (Page) HttpContext.Current.Handler;
Label lbl = (Label) page.FindControl("lbl1"); // lbl is always null.
lbl.Text = DateTime.Now.ToString();
}
在JavaScript:
function updateLabel() {
PageMethods.UpdateLabel();
}
在ASPX:
<asp:DropDownList ID="ddl2" runat="server" onchange="javascript:updateLabel()">
</asp:DropDownList>
通過做上述,我能夠調用靜態的WebMethod。但是,我無法找到該標籤。它總是返回null。 ?:(
我怎樣才能使這項工作我缺少的東西
感謝