Avatar billede aero Nybegynder
11. december 2005 - 09:43 Der er 17 kommentarer og
1 løsning

4 små spm. omkring asp.net

Hej jeg har kigget en del på asp.net og tror snart jeg har en forståelse for hvordan det virker iforhold til asp 3.0.

jeg har dog 4 små spm.

1. At lave en fejl meddelse for en form dropdown i asp.net er en del lettere end i asp 3.0...
<asp:DropDownList runat="server" id="sex" />
<asp:RequiredFieldValidator id="required_sex" runat="server"
    controlToValidate="sex"
    ErrorMessage="Du skal vælge hvilket køn du er !!."
    display="none" />
mit spm til dette er HVORDAN laver jeg en style på denne dropdown eller hvis det var et tekstfelt/box hvordan gør jeg så det får den borderfarve mm som jeg ønsker den skal have..
findes der er site der har en masse eks på dette evt som html.dk !?

2. I toppen af et docment skriver man Trace="False" hvad gør den og hvad gør True..

3. Man kan kalde en form for opensouce kalender frem med <asp:Calendar ID="Calendar" runat="server"></asp:Calendar> hvordan kan man ændre style for denne !? og findes der er site der beskriver andre opensouce ting !?

4. Jeg har læst at man ikke kan overføre en session fra asp 3.0 til asp.net sådan med det samme, hvad kan jeg gøre for at jeg kan det !? ville jo være lækkert at kunne gøre det hvis man har et script på 5 asp 3.0 sider som man vil lave om til asp.net, at man så kunne tage en side af gangen og teste om der virker som det skal og så gå videre til næste side osv osv. selvom man bruger session på alle siderne.
Avatar billede Slettet bruger
11. december 2005 - 11:05 #1
1) Du bruger property cssClass for at sætte hvad der svare til class eller du kan bruge style for at add styles fra koden. Se properties på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsdropdownlistmemberstopic.asp

2) Hvis du skriver True så laver asp.net fortolkeren et trace af hvorledes afviklingen af siden er forløbet. Heri blandt dump af alle HTTP "variabler" og hvilke events der er udført. Bare prøv at tænde der sker ikke noget "farligt"

3) ?? men check MSDN

4) Du kan ikke overføre sessions. Du skal lave en oversessions mekanisme selv og det er minus smart, IMHO
Avatar billede snepnet Nybegynder
11. december 2005 - 12:22 #2
Bare lidt ekstra kommentarer:

1)
Der er lidt styling-begrænsninger på en dropdownlist... tror f.eks. ikke du sådan lidt umiddelbart kan angive en bordercolor.

2)
Du kan også angive den slags i web.config, så det virker for alle sider på dit site:
<trace enabled="true" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
(ovenstående medfører at du skal gå til http://server/site/trace.axd - men du kan prøve at sætte pageOutput="true").

3)
Hvad mener du med open-source?
kalenderen er bare en medfølgende serverkontrol på lige fod med de andre (TextBox, DataList, DataGrid osv), men der er mange der har lavet kontroller du kan hente og bruge - se f.eks. her:
http://www.asp.net/default.aspx?tabindex=2&tabid=31

4)
Du kan se lidt om det med at dele session her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp

og ellers er det noget der er godt med hits på:
http://www.google.dk/search?hl=da&q=sharing+session+between+asp+and+asp.net&meta=

mvh
Avatar billede aero Nybegynder
11. december 2005 - 19:28 #3
okay mange tak for dog lige et sidste spm.

Access databaser...

Jeg bruger dette i en inklude fil i normal asp.
<%
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4

Set objConn = Server.CreateObject("ADODB.Connection")

Sub OpenDB
  On Error Resume Next
  Dim cnstDBPath
  cnstDBPath = ("d:\web\localuser\domæne.dk\database\database.mdb")
  Dim strProvider
  Dim kontaktOk

  strProvider = "" & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & cnstDBPath & ";"
  strProvider = strProvider & "Persist Security Info=False"
  objConn.Connectionstring = strProvider
  kontaktOk = true
 
  set fso = Server.CreateObject("Scripting.FileSystemObject")
  if (fso.FileExists(cnstDBPath))=true Then
    objConn.Open
    if int(objConn.State) = 0 then kontaktOk = false
  else
    kontaktOk = false
    Response.Write "Database filen kunne ikke findes!<br>"
    Response.End()
  end if
  if kontaktOk = false then
    Response.Write "Fejl kunne ikke få kontakt til databasen, prøv at reloade siden."
    Response.End()
  end if
'  On Error goto 0
End Sub

Sub CloseDB
  objConn.Close
  Set objConn = Nothing
End Sub

Kan jeg stadigvæk bruge det i asp.net eller bør den omskrives for at øge sikkerheden/hurtigheden!? Og hvordan skal den så se ud !? Samt hvis jeg ikke vil lave en inklude file som i asp 3.0, vil jeg så kunne sætte det ind i web.config så den automatisk er sat til !?

derudover bruger jeg dette på selve siden hvor det skal kaldes...
Call OpenDB

strSQL = "SELECT [noget],[noget],[noget] FROM tabel"
strSQL = strSQL & " WHERE [noget] = 1"
Set objRS = objConn.Execute(strSQL)


eller

Call OpenDB

strSQL = "SELECT [noget],[noget],[noget] FROM tabel"
strSQL = strSQL & " ORDER BY [noget] DESC"
Set objRS = objConn.Execute(strSQL)

Kan jeg bruge dem i min asp.net eller bør de også skrives om og til hvad !?
Avatar billede aero Nybegynder
11. december 2005 - 19:28 #4
samt vil i begge ligge et svar
Avatar billede snepnet Nybegynder
11. december 2005 - 19:46 #5
jeg synes du skal prøve at kigge her:
http://samples.gotdotnet.com/quickstart/howto/

og med hensyn til dit spørgsmål - så skal du ikke som udgangspunkt forvente at der er nogle synderlige sammenhænge mellem asp og asp.net... det har ikke ret meget med hinanden at gøre.

hvis du vil hente noget fra en database kan du gøre det med noget i denne stil:

SqlConnection con = new SqlConnection(...);

SqlCommand command = new SqlCommand(..., con);
SqlDataAdapter adapter = new SqlDataAdapter(command);

DataSet data = new DataSet();
adapter.Fill(data);

data vil så indeholde hvad du nu end har hentet fra basen.

hvis det er en access database du vil snakke med - skifter du bare Sql ud med OleDb, så du f.eks. får en OleDbConnection.

mvh
Avatar billede aero Nybegynder
11. december 2005 - 22:12 #6
kan godt se hvad du mener og er også det jeg har læst mig frem til, men hvordan ved den hvor min database gemmer sig henne !? når databasen er i en anden mappe og ikke i samme mappe som den side der skal bruge den !?
Avatar billede snepnet Nybegynder
11. december 2005 - 22:27 #7
du skriver i din connectionstring hvor den ligger.
mvh
Avatar billede aero Nybegynder
11. december 2005 - 22:40 #8
eller har en anden idée er det muligt at få dig eller en af jer til at lave en lille code med en db conn til en access db med fiktivt navn og tabeller og så lave et udtræt fra den også så jeg kan lave db'en og teste den og se sammenhænget !?
ville være kanon hvis det kunne lade sig gøre, så fatter jeg lidt mere af det...
Avatar billede aero Nybegynder
11. december 2005 - 22:53 #9
ved ikke om denne conn er rigtig men er kommer frem til noget i stil med dette
<%
Public Sub DBConnect()
    Dim Cmd As New ADODB.Command
    Dim RS As ADODB.Recordset
    Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = d:\web\localuser\domæne.dk\database\database.mdb"
    Conn.Open
    Cmd.ActiveConnection = Conn
    Cmd.CommandText = "MT"
    Cmd.CommandType = adCmdTable
    Set RS = Cmd.Execute
End Sub
%>

Kan det bruges !? og hvad så men udtrækning af data !? og evt min lukning af db'en !?
Avatar billede snepnet Nybegynder
11. december 2005 - 23:08 #10
det er alm asp du skriver - har ikke noget med .net at gøre.

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<filsti til database>;User Id=admin;Password=;";

OleDbConnection con = new OleDbConnection(connectionString);

OleDbCommand command = new OleDbCommand("select * from sometable", con);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);

DataSet data = new DataSet();
adapter.Fill(data);

hvis du vil skrive vise ovenstående på en side - kan du sætte sådan en her ind på siden:

<asp:DataGrid id="grid" runat="server" />

og så i koden:
protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    // koden fra før - og
    grid.DataSource = data;
    grid.DataBind();   
  }
}

har du kigget på link jeg sendte dig 19:46:12?

mvh
Avatar billede snepnet Nybegynder
11. december 2005 - 23:09 #11
http://samples.gotdotnet.com/quickstart/howto/
der er diverse forskellige eksempler på hvordan du løser alm forekommende opgaver.
mvh
Avatar billede aero Nybegynder
11. december 2005 - 23:15 #12
ja jeg har og takker men af en eller anden grund siger det mig mere at se et eksp. end at skulle se på flere forskellige og så blive forviret. hvis du forstår..
Avatar billede snepnet Nybegynder
11. december 2005 - 23:23 #13
så start her:
http://samples.gotdotnet.com/quickstart/howto/doc/adoplus/adodtreader.aspx
eller brug det jeg har skrevet.
mvh
Avatar billede aero Nybegynder
11. december 2005 - 23:28 #14
ret mig hvis jeg tager fejl...men vil lige se om jeg nu har fattet det bare lidt Hr.

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="VB" runat="server">
    sub Page_Load(Scr As Object, E As EventArgs)

    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<filsti  til database>;User Id=admin;Password=;";

OleDbConnection con = new OleDbConnection(connectionString);

OleDbCommand command = new OleDbCommand("select * from sometable", con);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);

DataSet data = new DataSet();
adapter.Fill(data);
    End Sub
</script>
<!DOCTYPE bla bla bla >
<html>
<head>
<title></title>
</head>
<body>
    <asp:DataGrid id="grid" runat="server" />
</body>
</html>


Vil dette virker eller er der en lille rettelse !? hvis ok så hvis vi tager udgangspunkt i det jeg har lavet nu vil delete og update sql'en se ud som normalt eller hvordan vil de linje se ud for dette !?

Og så tror jeg at jeg har fået en god mængde info af jer/Snepnet efter dette.
På forhånd 1000 Tak.
Avatar billede snepnet Nybegynder
12. december 2005 - 16:42 #15
så længe du sørger for at have en rigtig sti i din connectionstring  skal du nok få proppet data i dit dataset, men får at få det vist i listen - skal du også bruge det fra 11/12-2005 23:08:01

diverse andre commands kan du udforme som du du plejer, og de skal tilknyttes adapteren som commands... der er gode eksempler på howto-siden.

mvh
Avatar billede snepnet Nybegynder
12. december 2005 - 16:48 #16
du kan for så vidt slippe for at skrive andet end din select-command:

// lav ændringer i data - og

if(data.HasChanges())
{
  SqlCommandBuilder combuilder = new SqlCommandBuilder(adapter); 
  adapter.Update(data);
}

men det er ikke en særlig effektiv løsning (hvad performane angår)

mvh
Avatar billede aero Nybegynder
12. december 2005 - 19:03 #17
jeg accepterer lige dit svar da du har brugt så lang tid på dette spm.

Men lige en sidste ting, med DataGrid kan man hente tingene som de er mm.

men hvad nu hvis man har noget bestemt som den skal gøre.

evt et sted hvor den skal lave 2 farver alt efter tal.

if
objRS("tal1") < objRS("tal2") Then
Response.Write("<font color=""#453626"">" & objRS("tal1") & " - " & objRS("tal2") & "</font>"
Else if
objRS("tal1") == objRS("tal2") Then
Response.Write("<font color=""#FFFFFF"">" & objRS("tal1") & " - " & objRS("tal2") & "</font>"
Else if
objRS("tal1") > objRS("tal2") Then
Response.Write("<font color=""#CC0066"">" & objRS("tal1") & " - " & objRS("tal2") & "</font>"
End IF

hvordan vil det se ud med asp.net når det er en if sætning og man trækker dele af recorderne ud. !?
Avatar billede snepnet Nybegynder
12. december 2005 - 19:29 #18
der er forskellige muligheder... enten kan du gøre det med en template:

<asp:DataGrid id="grid" runat="server" AutoGenerateColumns="false">
<TemplateColumn>
  <ItemTemplate>
    <asp:Label id="lblSomething" runat="server" Text='<%# databindingsudtryk* %>'
  </ItemTemplate>
</TemplateColumn>
</asp:DataGrid>

* her kan du sådan set skrive kode.... f.eks.:
(bool)DataBinder.Eval(Container.DataItem, "someBool") == true ? "ja" : "nej"

men du kan også gøre det i din code-behind - typisk ved at abbonere på et event der hedder ItemDataBound

void someGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
  // her kan du så gå ind via e - og gøre diverse
}

se eventuelt http://www.datagridgirl.com

mvh
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