JAK: Ručně účtovat zpět pro určité události v .aspx stránce pomocí Visual Basic .NET

Souhrn

Tento podrobný článek popisuje, jak nastavit stránku ASPX tak, aby generovaný kód HTML bude účtovat zpět na server v odezvě na specifické události ovládacího prvku. Pro účely příkladu v tomto článku používá Internet Explorer webové ovládací prvky TreeView ovládacího prvku.

Vlastnost AutoPostBack

  • PRAVDA. Při AutoPostBack na hodnotu True pro ovládací prvek, ovládací prvek mohou účtovat zpět na server v reakci na události, které jste nechtěli způsobuje postback.

    Například nastavení AutoPostBack na hodnotu True na ovládací prvek TreeView způsobí zpětné odeslání v reakci na tyto události: onExpand; onCollapse; onCheck; a onSelectedIndexChange.
  • Hodnotu false. Nastavením AutoPostBack na hodnotu False, post zpět ručně v odezvě na specifické události.
zpět na horní

Vytvořit kód

Chcete-li zaúčtovat zpět ručně v odezvě na událost onSelectedIndexChange, postupujte takto.
  1. Vytvořit webovou aplikaci a potom ovládací prvek TreeView do stránky ASPX.
  2. Na stránce ASPX nastavte na hodnotu Falsevlastnost AutoPostBack ovládacího prvku TreeView .
  3. Ve vlastnosti uzlů prvku TreeViewklepněte na tlačítko kolekce elipsis (...) a potom přidejte některé uzly a děti
    Kolekce uzlů prvku TreeView .
  4. Popisovač události Při načtení stránky HTML a potom volání initTree funkce. Tato funkce straně klienta bude generován v události Page_Load stránky ASPX.

    V zobrazení HTML stránky aspx přidejte obslužnou rutinu pro událost onload značky body následujícím způsobem:
    <body onload="initTree()">
  5. Přidejte následující kód z této funkce Page_Load Page_Load funkce třídy kódem na pozadí souboru .aspx.
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    Dim strTreeName As String = "TreeView1"
    Dim strRef As String = Page.GetPostBackEventReference(TreeView1)
    Dim strScript As String = "<script language=""JavaScript""> " & vbCrLf & _
    "<!-- " & vbCrLf & _
    "function initTree() { " & vbCrLf & _
    "" & strTreeName & ".onSelectedIndexChange = function() { " & vbCrLf & _
    "if (event.oldTreeNodeIndex != event.newTreeNodeIndex) " & vbCrLf & _
    "this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex & ',' & event.newTreeNodeIndex); " & vbCrLf & _
    "window.setTimeout('" & strRef.Replace("'", "\'") & "', 0, 'JavaScript'); " & vbCrLf & _
    "} " & vbCrLf & _
    "} " & vbCrLf & _
    "// --> " & vbCrLf & _
    "</script>"

    Page.RegisterClientScriptBlock("InitTree", strScript)
    End Sub

zpět na horní

Vysvětlení kódu

Jak rozvíjet kód

Kód poskytnuté v tomto článku byl vyvinut pomocí následujícího postupu:
  • Byl vyvinut stránku .aspx a AutoPostBack pro prvek TreeView byla nastavena na hodnotu True.
  • Byl zobrazit stránku ASPX v prohlížeči Internet Explorer a zdroj byl uložen do souboru HTML.
  • AutoPostBack pro prvek TreeView byla nastavena na hodnotu Falsea pak byla stránka zobrazena znovu v prohlížeči.
  • Porovnání dvou souborů a s ohledem na rozdíly přispěl k vytvoření kódu uvedeném dříve v tomto článku.

Další informace o kódu

  • Kód z funkce Page_Load v tomto článku vykreslí následující kód v prohlížeči:
    <script language="JavaScript"><!-- 
    function initTree() {
    TreeView1.onSelectedIndexChange = function() {
    if (event.oldTreeNodeIndex != event.newTreeNodeIndex)
    this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex & ',' & event.newTreeNodeIndex);

    window.setTimeout('__doPostBack(\'TreeView1\',\'\')', 0, 'JavaScript');
    }
    }
    // -->
    </script>

    InitTree funkce se spustí při načtení stránky HTML do prohlížeče. Funkce initTree přepíše onSelectedIndexChange události TreeView1 tak, aby onSelectedIndexChange událost je přidána do fronty událostí pro stránku a potom odeslána zpět na server.
  • První řádek nová funkce onSelectedIndexChange
    if (event.oldTreeNodeIndex != event.newTreeNodeIndex)     this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex);

    je převzata přímo z původní definici funkce definované v souboru HTML uložený.
  • Nastavení AutoPostBack pro prvek TreeView na True , vykreslí následující kód v jazyce HTML:
    window.setTimeout('__doPostBack(\'TreeView1\',\'\')', 0, 'JavaScript');
    Vzhledem k tomu, že mechanismus zpětného volání (v tomto případě __doPostBack) může v budoucnu změnit, generujte funkci na serveru pomocí následující kód:
    string strRef = Page.GetPostBackEventReference(TreeView1);
    Odkaz na události zpětného odeslání se pak používá v Page_Load generovat události zpětného volání na straně klienta.
zpět na horní

Odkazy

Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
305140 informace: Přehled technologie ASP.NET

319441 jak: dynamicky přidání uzlů do ovládacího prvku WebBrowser TreeView pomocí jazyka Visual Basic .NET

zpět na horní
Vlastnosti

ID článku: 328923 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor