Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Så alt du skal gjøre er å hente ut data fra en tabell? Letteste er vel å bruke DataReader objektet her, så får du en read-only stream fra databasen.

 

SqlConnection connection = newSqlConnection("myconnectionstringhere");
SqlCommand command = newSqlCommand("SELECT * FROM Customers", connection);
connection.Open();
SqlDataReader data = command.ExecuteReader(CommandBehavior.CloseConnection);
while( data.Read() )

{
  // Print ut data her

}
data.Dispose();
connection.Close();

Lenke til kommentar
Ah, sa ikke at det var ASP, beklager :)

 

http://aspnet101.com/aspnet101/aspnet/code...?code=mysqlcode

Det ligger i .net forumet??

 

ang. koden til hockey5000:

 

using(SqlConnection connection = newSqlConnection("myconnectionstringhere"))
{
connection.Open();
SqlCommand command = newSqlCommand("SELECT * FROM Customers", connection);

using(SqlDataReader data = command.ExecuteReader(CommandBehavior.CloseConnection))
{
	while( data.Read() )
	{
	  // Print ut data her - data["feltnavn1"].ToString(), osv.... (eller data[1], data[2]....)
	 }
}
}

 

Du bør bruke using, hvis du ikke har noen veldig gode grunner til å ikke gjøre det.

 

Edit:

 

Response.Write() legger inn teksten OVER <html> og slikt... Bør heller bruke en asp:Literal eller noe i GUI-fila, og bruke idTilLiteral.Text += ...

Endret av Manfred
Lenke til kommentar
Response.Write burde vel fungere?

 

Kommer vel an på hvilken Page event du "Response.Write"r i.

Min erfaring er at hvis du gjør det i Load eventen så er ikke resten av siden rendret, og dermed vil alt havne i begynnelsen av html koden.

 

Jeg ville heller brukt en Repeater for å presentere artiklene.

Lenke til kommentar

Har problemer med å forstå dette konseptet fordi C# koden ligger i en separat fil og dermed blir det liksom helt annerledes en PHP, som bare plasserer resultatet der hvor PHP koden ligger.

 

Response.write høres på en måte riktig ut i mine ører, men jeg vet ikke helt hvor jeg skal legge dette. Se for dere følgende side:

ASPX fil:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ArticlePage.aspx.cs" Inherits="ArticlePage" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MenuAreaLeftTop" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainArea" Runat="Server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ToolContent" Runat="Server">
</asp:Content>

SOm dere ser så hjar jeg i denne formen lagt inn en LABEL. Denne kan jeg jo endre innholdet på i C# koden

label.text = "Heisan og hoppsan"

men dette er jo ikke HTML. Jeg ønsker å legge inn HTML rett inn der hvor den LABEL kontrololen ligger. Ser jo at LABEL ikke er rett kontrol, men hva kan jeg gjøre for å få dette til?

 

takker for all hjelp

 

Ole

Lenke til kommentar

Det er vel asp:Repeater, som kaffenils sier...

 

Evt. så kan du alltids adde controls til en Panel.. <asp:Panel ID="myPanel"...

 

Panel.Controls.Add(...

 

Du kan jo da lage en html tabell, ved å gjøre noe a'la:

Table t = new Table();

TableRow tr = new TableRow();

TableCell tc = new TableCell();
tc.Text = "Tekst";
tr.Controls.Add(tc);

t.Controls.Add(tr);
...

 

Eller noe slikt...

Lenke til kommentar

Et rask eksempel:

 

protected void Page_Load(object sender, EventArgs e)
{
	if (!IsPostBack)
	{
		using (SqlConnection conn = new SqlConnection("Data Source=dinserver;Initial Catalog=OleMortenTidene;Integrated Security=SSPI"))
		{
			conn.Open();

			using (SqlDataAdapter da = new SqlDataAdapter("select ArtikkelTekst from Artikler", conn))
			{
				using (DataTable dt = new DataTable())
				{
					da.Fill(dt);
					artikler.DataSource = dt;
					artikler.DataBind();
				}
			}

		}
	}
}

 

DataSource kan være hva som helt som implementerer IEnumerable eller IListSource. Jeg brukte en DataTable for enkelhets skyld.

 

På aspx-siden legger du inn en repeater som f.eks. ser slik ut:

 

		<asp:repeater id="artikler" runat="server">
	<ItemTemplate>
		<%# (Container.DataItem as System.Data.DataRowView).Row["ArtikkelTekst"].ToString()%>
		<br />
	</ItemTemplate>
	</asp:repeater>

Lenke til kommentar

Prøvde det men fikk meldingen "Kodeblokker støttes ikek i denne konteksten". Sikkert fordi jeg har valgt å ha SOURCE i egen fil.

Men tankegangen ser god ut. Noe jeg kan gjøre for å komme rundt dette?

 

Dette er ASPX fila:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ArticlePage.aspx.cs" Inherits="ArticlePage" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MenuAreaLeftTop" Runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainArea" Runat="Server">
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1" OnItemCommand="Repeater1_ItemCommand1">
	<%# (Container.DataItem as System.Data.DataRowView).Row["Article"].ToString()%>
</asp:Repeater>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete"
	InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetArticles"
	TypeName="ArticlesDatasetTableAdapters.ArticlesTableAdapter" UpdateMethod="Update">
	<DeleteParameters>
		<asp:Parameter Name="Original_GUID" Type="String" />
	</DeleteParameters>
	<UpdateParameters>
		<asp:Parameter Name="GUID" Type="String" />
		<asp:Parameter Name="SectionID" Type="String" />
		<asp:Parameter Name="AuthorGUID" Type="String" />
		<asp:Parameter Name="Title" Type="String" />
		<asp:Parameter Name="VisibleFromDateTime" Type="DateTime" />
		<asp:Parameter Name="VisibleToDateTime" Type="DateTime" />
		<asp:Parameter Name="ViewOnFirstPage" Type="Byte" />
		<asp:Parameter Name="Article" Type="String" />
		<asp:Parameter Name="Original_GUID" Type="String" />
	</UpdateParameters>
	<InsertParameters>
		<asp:Parameter Name="GUID" Type="String" />
		<asp:Parameter Name="SectionID" Type="String" />
		<asp:Parameter Name="AuthorGUID" Type="String" />
		<asp:Parameter Name="Title" Type="String" />
		<asp:Parameter Name="VisibleFromDateTime" Type="DateTime" />
		<asp:Parameter Name="VisibleToDateTime" Type="DateTime" />
		<asp:Parameter Name="ViewOnFirstPage" Type="Byte" />
		<asp:Parameter Name="Article" Type="String" />
	</InsertParameters>
</asp:ObjectDataSource>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ToolContent" Runat="Server">
</asp:Content>

Lenke til kommentar
Prøvde det men fikk meldingen "Kodeblokker støttes ikek i denne konteksten". Sikkert fordi jeg har valgt å ha SOURCE i egen fil.

Men tankegangen ser god ut. Noe jeg kan gjøre for å komme rundt dette?

 

Dette er ASPX fila:

....

 

<asp:repeater> kan ikke innehold html/tekst. Disse må ligge inne i f.eks. en <itemtemplate>.

 

<asp:repeater...>
<itemtemplate>
  <%#Eval("Brukernavn") %> - <%#Eval("Telefonnummer") %>
</itemtemplate>
</asp:repeater>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...