12. november 2004 - 13:43Der 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" %>
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?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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!
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.
// 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");
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
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.
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);
Synes godt om
Ny brugerNybegynder
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.