Ovenstående er et eksempel. Det faktiske kode ikluderer en del forskellige klasser. Jeg har forsøgt at sætte AutoEventWireup=True. Dette gør at grid'et bliver fyldt ud to gange !? Så derfor forsøger jeg nu med AutoEventWireup=False.
Ideen er fra vs.net, som gør sådan pr default. Jeg har prøvet samme kode i vs.net, og her virker det, men siden det er besluttet IKKE at bruge vs.net hjælper det ikke andet end at bekræftige at koden virker (!). Det er noget med at vs.net selv strikker noget kode sammen, som sørger for at binde codebehind-event-metoder (delegates ?) sammem med de relevante events !?!
ja... den er jeg med på... jeg får ingen kompilerings el runtime fejl... der sker bare ikke andet end at formen bliver submittet - der bliver ikke skrevet "test" i labelen, hvorfor jeg konkludere at metoden ikke bliver kaldt !?
hvis jeg fjerner AutoEventFireup atributen, bliver detagrid'et udfyldt 2 gange - dvs kolonnerne kommer 2 gange... og efterfølgende giver den TypeCommand() metode en fejl
... og det her nok noget at gøre med at det er et udvidet datagrid jeg bruger - altså en klasse, som arver fra datagrid. Dette objekts databind bliver kaldt ved Page_Load() eventen, så hvis jeg kan undgå at databind bliver kaldt 2 gange er problemet "løst".
grunden til at man sætter autoeventwireup til false, er hvis man ikke automatisk vil have udført Page_Load og Page_Init procedurerne, så det er nok derfor det virker som det skal når du har sat den til false
men har du prøvet at lave et namespace din klasse ligger i og sørger for at bruge denne @page linje
ah.. så skal du ikke bruge codebehind, men src. Codebehind er noget VS.Net ting (så den kan holde styr på hvad høre til hvad), og ignoreres af din compiler
using System; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
namespace Example { public class _default : System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblInfo; protected System.Web.UI.WebControls.Button btnSubmit;
Protected listSearch As SearchGrid Protected lblTest As Label
...
Public Sub TypeCommand(sender As Object, e As DataGridCommandEventArgs) lblTest.Text = "dims" ' Dim objRow As TableCellCollection = e.Item.Cells ' Dim objCustomer As New Customer() ' objCustomer.Id = CInt(objRow.Item(0).Text) ' objCustomer.Name = objRow.Item(1).Text ' objCustomer.Address = objRow.Item(2).Text ' objCustomer.PoBox = objRow.Item(3).Text ' objCustomer.Phone = objRow.Item(5).Text ' objCustomer.EMail = objRow.Item(6).Text ' ' If Not Session.Item("object") Is Nothing Then ' Session.Item("object") = objCustomer ' Else ' Session.Add("object",objCustomer) ' End If ' ' Response.Redirect("edit.aspx") End Sub
så længe du bruger src til din codebehind fil, og inheritter den rigtige klasse (altså namespace.klasse) skulle det virke... ligesom i mit eksempel (det er godt nok c# men opbygningen er den samme)
du kunne evt. prøve med at lave en side i vb, der gør nøjagtig det samme som mit eksempel, og ikke andet. når det så virker, så kan du prøve at sætte mere og mere på... indtil det enten går galt, eller virker som det skal.
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30456: 'btnTest' is not a member of 'ASP.testlist_aspx'.
Source Error:
Line 4: </head> Line 5: <body> Line 6: <form runat="server"> Line 7: <asp:label id="lblTest" runat="server" /><br /> Line 8: <asp:button id="btnTest" runat="server" text="Text" onClick="TestIt" />
tknudsen>> hmmmmmmm... det forstår jeg virkelig ikke... det er længe siden jeg selv har haft brug for at kompilere noget manuelt, men jeg kan huske at jeg dengang ikke lavede referencer til hverken system.dll, system.data.dll
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.