Avatar billede mach3 Nybegynder
12. november 2004 - 13:43 Der er 8 kommentarer og
1 løsning

asp.net: fange event!?

hej!

jeg har et problem med treeview i asp.net. her er .cs filen:

        public void SubmitBtn_Click(object sender, System.EventArgs e)
        {
            Message.Text="Hello World!!";
        }

Og her er .aspx filen:
<%@ Control Language="c#"
    AutoEventWireup="false"
    Inherits="Test.Treeview"
%>
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>


<form runat="server" ID="Form1">
    <iewc:Treeview id="TreeView1" OnNodeClick="SubmitBtn_Click" AutoPostBack="false" runat="server"></iewc:TreeView>
   
   
   
        <br/>  Click on the submit button.<br/><br/>

      <asp:Button id="Button1"
          Text="Submit"
          OnClick="SubmitBtn_Click"
          runat="server"/>
     
      <p>

      <asp:label id="Message" runat="server"/>
   
       
</form>


Når man trykker submit skal teksten "hello world" skrives til labelen. Men det sker ikke! Jeg tror den er gal med min eventhandler, er der nogen der har erfaring med event handlers i asp.net?

mange tak
med venlig hilsen
Avatar billede mach3 Nybegynder
12. november 2004 - 13:46 #1
damn - jeg formulerede mig forkert: når man klikker submit skrives der "hello world" i labelen. men jeg vil have det samme til at ske når man klikker på en node i træet. dvs jeg kan ikke fange dens event - det er det som er problemet.

sorry for ikke at formulere mig ordentligt - bare kom med spørgsmål så skal jeg nok svare!
Avatar billede nielsbrinch Nybegynder
12. november 2004 - 14:38 #2
i .cs-filen er der et afsnit der hedder "Web Form Designer generated code" - derunder skal du lave en eventhandler til dit træ. Du kan se den eventhandler VS.NET har lavet til din knap, og mere eller mindre kopiere den.
Avatar billede mach3 Nybegynder
12. november 2004 - 14:52 #3
nielsbrinch >> jeg skal have lavet en eventhandler der kan reagere på events i mit treeview.

ok jeg prøver lige det du foreslår.
Avatar billede nielsbrinch Nybegynder
12. november 2004 - 15:05 #4
Det må skulle se nogenlunde sådan ud:

this.treeView.OnNodeClick += new Microsoft.Web.UI.TreeView.OnNodeClickEventHandler(this.SubmitBtn_Click);
Avatar billede mach3 Nybegynder
12. november 2004 - 15:21 #5
'Test.Code.Treeview' does not contain a definition for 'TreeView'. Det er hvad den siger når jeg forsøger at compile.

Her er hele .cs koden, hvis det hjælper:

namespace Test.Code
{
    using System;
    using System.Data;
    using System.Data.OleDb;
   
       
    using Microsoft.Web.UI.WebControls;
       
    /// <summary>
    ///        Summary description for quicklinks.
    /// </summary>
    public abstract class Treeview : System.Web.UI.UserControl
    {
        protected Microsoft.Web.UI.WebControls.TreeView TreeView1 = new TreeView();
        protected System.Web.UI.WebControls.Label Message = new System.Web.UI.WebControls.Label();
        protected System.Web.UI.WebControls.Button Button1 = new System.Web.UI.WebControls.Button();
               

               
        private void Page_Load(object sender, System.EventArgs e)
        {
       
        if(!IsPostBack)
       
        {           
           
            // Put user code to initialize the page here
            string conStr = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=C://Database/Nwind.mdb";
            OleDbConnection myConnection = new OleDbConnection(conStr);        
       
            OleDbDataAdapter daSuppliers = new OleDbDataAdapter("SELECT CompanyName,SupplierID FROM Suppliers", myConnection);
            OleDbDataAdapter daProducts = new OleDbDataAdapter("SELECT ProductName, ProductID, SupplierID FROM Products", myConnection);       
       
            DataSet objDS = new DataSet();
            daSuppliers.Fill(objDS,"dtSuppliers");
            daProducts.Fill(objDS,"dtProducts");
           
            objDS.Relations.Add("SuppToProd", objDS.Tables["dtSuppliers"].Columns["SupplierID"],objDS.Tables["dtProducts"].Columns["SupplierID"]);
     
            TreeNode nodeSupp;
            TreeNode nodeProd;
           
       
            foreach(DataRow rowSupp in objDS.Tables["dtSuppliers"].Rows)
            {
                nodeSupp = new TreeNode();
                nodeSupp.Text = Convert.ToString(rowSupp["CompanyName"]);
                nodeSupp.ID = Convert.ToString(rowSupp["CompanyName"]);
                TreeView1.Nodes.Add(nodeSupp);
           
                foreach(DataRow rowProd in rowSupp.GetChildRows("SuppToProd"))
                {
                    nodeProd = new TreeNode();
                    nodeProd.Text = Convert.ToString(rowProd["ProductName"]);
                    nodeProd.ID = Convert.ToString(rowProd["ProductID"]);
                    nodeSupp.Nodes.Add(nodeProd);
                }
            }           

        }
        }
       

        public void SubmitBtn_Click(object sender, System.EventArgs e)
        {
            Message.Text="Hello World!!";
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        ///        Required method for Designer support - do not modify
        ///        the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);
            this.TreeView.OnNodeClick += new Microsoft.Web.UI.TreeView.OnNodeClickEventHandler(this.SubmitBtn_Click);
        }
        #endregion

            }
}
Avatar billede mach3 Nybegynder
12. november 2004 - 15:23 #6
og her er hele .aspx filen (det er faktisk en .ascx men det er jo ligemeget):

<%@ Control Language="c#"
    AutoEventWireup="false"
    Inherits="Test.Code.Treeview"
%>
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>


<form runat="server" ID="Form1">
    <iewc:Treeview id="TreeView1" OnNodeClick="" AutoPostBack="false" runat="server"></iewc:TreeView>
   
   
   
        <br/>  Click on the submit button.<br/><br/>

      <asp:Button id="Button1"
          Text="Submit"
          OnClick="SubmitBtn_Click"
          runat="server"/>
     
      <p>

      <asp:label id="Message" runat="server"/>
   
       
</form>
Avatar billede burningice Nybegynder
12. november 2004 - 17:34 #7
det er da en start at lade være med at oprette en ny instans af et TreeView i din codebehind. Det gør jo at du ikke har nogen reference til det TreeView du opretter på ascx-siden.
Avatar billede nielsbrinch Nybegynder
15. november 2004 - 19:58 #8
Desuden er det "TreeView" du har forsøgt at kalde din eventhandler på ... men din instans har du kaldt TreeView1
Avatar billede mach3 Nybegynder
16. november 2004 - 09:37 #9
Jeg har fundet ud af det - havde glemt dette inde i InitializeComponent():

            TreeView1.SelectedIndexChange += new SelectEventHandler(mySelectChangeFn);
            TreeView1.Expand += new ClickEventHandler(myExpandFn);
            TreeView1.Collapse += new ClickEventHandler(myCollapseFn);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester