2011-01-12 3 views
0

TreeNodeCheckChanged funktioniert nicht in meiner ASP.Net-Anwendung.TreeNodeCheckChanged funktioniert nicht in meiner ASP.Net-Anwendung

<asp:TreeView ID="TreeView1" ShowCheckBoxes="All" runat="server"      
    OnTreeNodeCheckChanged="TreeView1_TreeNodeCheckChanged"> 
</asp:TreeView> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.Page.IsPostBack) 
    { 
     TreeView(); //bind manually 
    } 
} 

Wie kann ich das beheben?

Antwort

2

Wie binden Sie Ihre TreeView?

Ich denke, man auf jedem Page_Load ist verbindlich (oder Page_Init, was auch immer), unabhängig von this.Page.IsPostback

Wenn Sie Ihre TreeView rebind vor den EventHandler im Asp.net Lifecycle erreicht ist, können Sie alle Ereignisse unterdrücken, die sein sollte angehoben, z Ihr OnTreeNodeCheckedChanged Ereignis

Nur binden auf

if(!this.Page.IsPostBack) 
{ 
    // insert your initial binding of your treeview here 
} 

Bei Postbacks müssen Sie erneut binden, nachdem der gewünschte Event-Handler


bearbeitet ausgeführt wurde:
Sie müssen manuell erzwingen PostBack, weil die TreeView keine Postback feuern wird, die die Checked-Eigenschaft des gerenderten chec ändert kboxes.

Auch wenn die TreeNodeCheckChanged Veranstaltung am Pfosten zurück abgefeuert wird, ist ein Kontrollkästchen ändert nicht einen Beitrag zurück führen.

TreeView.TreeNodeCheckChanged Event

+0

Ich habe bereits diesen Code. – kst

+0

Nein, hast du nicht. Im Markup ist keine DataSourceID-Eigenschaft zugewiesen. Das bedeutet, wenn Ihr TreeView etwas anzeigt, weisen Sie entweder die DataSourceID-Eigenschaft oder die DataSource-Eigenschaft manuell zu und rufen .DataBind() auf. Oder Sie greifen manuell auf die Eigenschaft Nodes zu und manipulieren sie. Ansonsten ist Ihr TreeView leer und kann das CheckedChanged Event nicht auslösen, da es keine Knoten gibt – citronas

+0

Ich binde es manuell beim Laden der Seite innerhalb von if (! IsPostBack) {}. CheckedChanged kann jedoch nicht ausgelöst werden. – kst

Verwandte Themen