13. december 2004 - 08:13
Der er
6 kommentarer og
2 løsninger
Genbruge kode / funktioner / subs
Jeg er igang med at lære ASP.NET - primært VB, da det er dét, jeg er vant til, at programmere asp i.
Det går fremad, men jeg er lidt i tvivl om, hvordan jeg kan genbruge kode, der allerede ér lavet i et projekt / applikation.
Før lavede jeg en include fil med alle mine funktioner og subs i, men det skulle vist ikke længere være nødvendigt længere.
Jeg HAR været forbi en masse MSDN, diverse bøger og så videre og så videre.
Er der en, der kan forklare det på dansk, på en måde, selv jeg kan fatte?
Mvh
Morch :-)
13. december 2004 - 08:22
#2
et praktisk eksempel kunne være dette :
<%@ Page Language="C#" %>
<%@ assembly name="ByteFX.MySqlClient" %>
<%@ import Namespace="ByteFX.Data.MySqlClient" %>
<%@ import Namespace="System.Data" %>
<script runat="server">
void Page_Load(object sender, EventArgs e) {
MySqlConnection con = new MySqlConnection("Data Source=localhost;Database=xxx;User ID=yyy;Password=zzz;");
MySqlCommand command = new MySqlCommand("select * from users", con);
MySqlDataAdapter adapter = new MySqlDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
Response.Write(ds.GetXml());
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
</form>
</body>
</html>
13. december 2004 - 08:28
#4
altså.... "bytefx-klodsen" er bare et eksempel på en genbrugelig komponent. det kunne ligeså godt have været en du selv havde lavet ved at producere at library som arne skrev.
der er nogle praktiske forskelle på hvordan du gør det, afhængig af udviklingsværktøj.... bruger du visual studio eller ?
mvh
13. december 2004 - 08:43
#5
Ok - Jeg har lavet en chat applikation, hvor fx. disse elementer indgår:
Sub brugerlisteopdater()
Dim i As Integer
Dim User, xid, rid As String
Dim Remove As ArrayList = New ArrayList
Dim BrRum As Array
Application.Set(Session("Name"), TimeOfDay)
For i = 0 To Application.Count - 1
If Application.GetKey(i) <> "Conversation" Then
If DateDiff("s", Application(i), TimeOfDay) > 20 Then
Remove.Add(Application.GetKey(i))
End If
End If
Next
If Remove.Count > 0 Then
Application.Lock()
For Each User In Remove
BrRum = Split(User, "Chat")
brugerindogud(BrRum(0), BrRum(1))
opdaterbrugerrum(BrRum(1))
Application.Remove(User)
Next
Application.UnLock()
End If
End Sub
Sub brugerindogud(ByVal rid, ByVal xid)
Dim myConnection As String
' If the connection string is null, use a default.myConnection As String
If myConnection = "" Then
myConnection = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=XXXXXXXXXXX;USER=XXXXXXXXXXX;PASSWORD=XXXXXXXXXXX; OPTION=3"
End If
Dim myConn As New OdbcConnection(myConnection)
Dim myInsertQuery As String = "INSERT INTO chat (chatbesked,xid,tid,room) values ("
myInsertQuery = myInsertQuery & "'" & findBrugereUd(xid) & " Har forladt chatten " & DatePart("d", Now) & "-" & DatePart("m", Now) & "-" & DatePart("yyyy", Now) & " kl. " & DatePart("h", Now) & ":" & DatePart("n", Now) & ":" & DatePart("s", Now) & "'"
myInsertQuery = myInsertQuery & ",18,'" & DatePart("yyyy", Now) & "-" & DatePart("m", Now) & "-" & DatePart("d", Now) & "" & DatePart("h", Now) & ":" & DatePart("n", Now) & ":" & DatePart("s", Now)
myInsertQuery = myInsertQuery & "'," & rid 'tal
myInsertQuery = myInsertQuery & ")"
'Response.Write(myInsertQuery)
Dim myOdbcCommand As New OdbcCommand(myInsertQuery)
myOdbcCommand.Connection = myConn
myConn.Open()
myOdbcCommand.ExecuteNonQuery()
myOdbcCommand.Connection.Close()
End Sub
Sub opdaterbrugerrum(ByVal xid)
Dim myConnection As String
myConnection = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=XXXXXXXXXXX;USER=XXXXXXXXXXX;PASSWORD=XXXXXXXXXXX; OPTION=3"
Dim myConn As New OdbcConnection(myConnection)
Dim myUpdateQuery As String = "UPDATE xxxxxx "
myUpdateQuery = myUpdateQuery & "set FElt=0"
myUpdateQuery = myUpdateQuery & " where xxx=" & xid
Dim myOdbcCommand As New OdbcCommand(myUpdateQuery)
myOdbcCommand.Connection = myConn
myConn.Open()
myOdbcCommand.ExecuteNonQuery()
myOdbcCommand.Connection.Close()
End Sub
Function findBrugere(ByVal Bxid)
Dim strConnection As String = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=XXXXXXXXXXX;XXXXXXXXXXX=root;PASSWORD=XXXXXXXXXXX; OPTION=3"
Dim objConnection As OdbcConnection = New OdbcConnection(strConnection)
Dim brugernavn, gender, profil, fraBruger As String
Dim antal, x As Integer
Dim strSQL, s As String
Bxid = Bxid.ToString
Dim objCommand As OdbcCommand
Dim objDataReader As OdbcDataReader
objConnection.Open()
strSQL = "Select xid,brugernavn,profil,gender, userlevel from brugere where xid = " & Bxid
objCommand = New OdbcCommand(strSQL, objConnection)
objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
While objDataReader.Read()
Bla. Bla. Bla. Bla. Bla.
End While
objDataReader.Close()
End Function
Function findBrugereUd(ByVal Bxid)
Dim strConnection As String = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=XXX;USER=XXXX;PASSWORD=XXXXXXXXXXX; OPTION=3"
Dim objConnection As OdbcConnection = New OdbcConnection(strConnection)
Dim brugernavn As String
Dim strSQL, s As String
Bxid = Bxid.ToString
Dim objCommand As OdbcCommand
Dim objDataReader As OdbcDataReader
objConnection.Open()
strSQL = "Select xid,xrugernavn,xrofil,xender from xxx where xid = " & Bxid
objCommand = New OdbcCommand(strSQL, objConnection)
objDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
While objDataReader.Read()
findBrugereUd = objDataReader("brugernavn")
End While
objDataReader.Close()
End Function
i en side ved navn chat.aspx
Jeg bruger VS .net 2003, så koden kompileres hver gang jeg gemmer.
Den starter således:
Public Class Chat
Inherits System.Web.UI.Page
Vil det så sige, at jeg vil kunne genbruge disse elementer i andre sider i applikationen, ved at skrive <%@ import Namespace="Chat" %>
?
Morch
16. december 2004 - 17:42
#8
har ikke set du har skrevet - sorry.
hvis du bruger visual studio, og bruger miljøet til at oprette dine sider, vil de som udgangspunkt ligger i samme namespace.
hvis du vil lave kontroller til genbrug kan du enten oprette dig nogle usercontrols (giver dig en ascx-fil du kan lave dit layout i, og en code-behind fil).
sådanne kontroller kan du bare trække ind på siden i vs.
ellers kan du lave dig et regulært kontrolbibliotek (en projekttype du har mulighed for at vælge), og i det bygge nogle kontroller op i ren kode.
du vil kunne sætte dem op i din toolbox på samme måde som dem der ligger der i forvejen.
mvh