Gå til innhold

Anbefalte innlegg

Skrevet

Heisan folkens.

 

Jeg er i ferd med å lage en webside for meg selv der jeg vil hente artikler fra en SQL server. Artikklene er lagret som HTML. Hvordan får jeg til dette tro?

 

mvh

Ole

Videoannonse
Annonse
Skrevet

Ser poenget ditt, men ser også at jeg kansje ikke var spesifert nok

 

Jeg bruker

MSSQL (skulle ikke bety noe)

ASP.NET (Visual Studio2005 med C#) og ikke PHP, så ECHO har ingen effekt her.

 

Andre forslag

Skrevet

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();

Skrevet (endret)
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
Skrevet
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.

Skrevet

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

Skrevet

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...

Skrevet

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>

Skrevet

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>

Skrevet

Hvis du har html-kode i databasen, så kan du jo bare bruke en <asp:Literal ID="myLiteral" runat="server" /> i aspx-fila, og bare si

 

myLiteral.Text = sqlDataReader["content"].ToString();

Skrevet
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>

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...