2014-10-03 2 views
0

Я не могу обновить метку asp.net при изменении индекса CascadingDropDown. См. Приведенный ниже код.ASP.NET Label не обновляется при изменении CascadingDropDown selectedindex

код 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 - это правда. AutoPostBack of ddl2 - это правда. DropDowns прекрасно обновляется. Но на этикетке нет. SelectedIndexChanged ddl2 не срабатывает. Я думаю, это из-за 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. ? :(

Как я могу сделать эту работу Могу ли я что-то отсутствует

Благодаря

ответ

0

Понял работать, как это

В JavaScript?!.

function updateLabel() { 
    PageMethods.UpdateLabel(updateLabelName); 
} 

function updateLabelName(response) { 
    var lbl = document.getElementById('<%=lbl1.ClientID%>'); 
    lbl.innerHTML = response; 
} 

В Код позади:

[WebMethod] 
public static string UpdateLabel() 
{ 
    return DateTime.Now.ToString(); 
} 
Смежные вопросы