webForumDet fria alternativet

Totalt nybörjare med .net undrar hur man får..

.NET

19 svar · 844 visningar · startad av tosses

Medlem sedan aug. 2003190 inlägg
Frågan#1
Medlem sedan jan. 2004501 inlägg
#2

Dra in en från verktygs fältet...som ligger på vänster sida. Ser ut som en lite hammare och så. Som åker ut när man håller musen över den typ.

Medlem sedan aug. 2003190 inlägg
#3

Förlåt!!! jag måste förtydliga mig lite :r

Jag menar:
Hur använder man en datagrid tillsammans med en accesstabell?
Hur gör jag för att hämta data och loopa fram med datagrid i visual studio.net?
Och sedan kunna editera den osv....
Jag får det nämligen inte att fungera!

/Tack igen

Medlem sedan juni 20011 732 inlägg
#4

Var exakt är det du fastnar? Får du något felmeddelande?

OleDbConnection c = new OleDbConnection(conn);
OleDbDataAdapter a = new OleDbDataAdapter(sql, c);

DataTable dt = new DataTable();			
a.Fill(dt);

datagrid.DataSource = dt;
datagrid.DataBind();
Medlem sedan aug. 2003190 inlägg
#5

Jag får inget output, inget resultat alls.
Jag har anslutit till en access db, skapat oledbdataadapter, dataset, oledbconnection och i property builder har jag talat om vilken data som ska visas.
Men NADA...

/Snyft

Medlem sedan aug. 2003190 inlägg
#6

Jag skrev så här i
private void Page_Load(object sender, System.EventArgs e)

DataGrid1.DataBind();

Så nu ser jag en tabell men ingen data

Medlem sedan maj 20018 027 inlägg
#7

tosses skrev:

Jag skrev så här i
private void Page_Load(object sender, System.EventArgs e)

DataGrid1.DataBind();

Så nu ser jag en tabell men ingen data

Om du kollar NETworks inlägg, ser du att han gjorde ytterliggare några saker innan anropet DataBind(). Har du gjort dessa saker, dvs kopplat datagriddet till en datakälla? Det ser inte ut så, om all kod du har skrivit är den du redovisat ovan.

Medlem sedan aug. 2003190 inlägg
#8

DataGrid1 är kopplat till DataSet1 är kopplad till min Access db.

I dataset properties ser jag tabellen och fälten från min db.

och jag får fram tabellrubrikerna men inte datat när jag kompilerar.

Medlem sedan juni 20011 732 inlägg
#9

Visa din kod! Sen om du bara ska visa lite data i din datagrid, använd en datatable istället för ett dataset, en datatable är ett dataset "light" kan man säga med bättre prestanda (och du får mindre kod).

Medlem sedan aug. 2003190 inlägg
#10

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace net1
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter2;
protected System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
protected System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
protected System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
protected System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
protected net1.DataSet1 dataSet11;

	private void Page_Load(object sender, System.EventArgs e)
	{
		// Put user code to initialize the page here
		DataGrid1.DataBind();

	}

	\#region Web Form Designer generated code
	override protected void OnInit(EventArgs e)
	{
		//
		// CODEGEN: This call is required by the ASP.NET Web Form Designer.
		//
		InitializeComponent();
		base.OnInit(e);
	}
	
	/// \<summary\>
	/// Required method for Designer support - do not modify
	/// the contents of this method with the code editor.
	/// \</summary\>
	private void InitializeComponent()
	{    
		this.oleDbDataAdapter2 = new System.Data.OleDb.OleDbDataAdapter();
		this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
		this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
		this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
		this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
		this.oleDbConnection1 = new System.Data.OleDb.OleDbConnection();
		this.dataSet11 = new net1.DataSet1();
		((System.ComponentModel.ISupportInitialize)(this.dataSet11)).BeginInit();
		// 
		// oleDbDataAdapter2
		// 
		this.oleDbDataAdapter2.DeleteCommand = this.oleDbDeleteCommand1;
		this.oleDbDataAdapter2.InsertCommand = this.oleDbInsertCommand1;
		this.oleDbDataAdapter2.SelectCommand = this.oleDbSelectCommand1;
		this.oleDbDataAdapter2.TableMappings.AddRange(new System.Data.Common.DataTableMapping\[\] {
																									new System.Data.Common.DataTableMapping("Table", "namn", new System.Data.Common.DataColumnMapping\[\] {
																																																			new System.Data.Common.DataColumnMapping("id", "id"),
																																																			new System.Data.Common.DataColumnMapping("namn", "namn"),
																																																			new System.Data.Common.DataColumnMapping("efternamn", "efternamn")})});
		this.oleDbDataAdapter2.UpdateCommand = this.oleDbUpdateCommand1;
		// 
		// oleDbSelectCommand1
		// 
		this.oleDbSelectCommand1.CommandText = "SELECT efternamn, id, namn FROM namn";
		this.oleDbSelectCommand1.Connection = this.oleDbConnection1;
		// 
		// oleDbInsertCommand1
		// 
		this.oleDbInsertCommand1.CommandText = "INSERT INTO namn(efternamn, namn) VALUES (?, ?)";
		this.oleDbInsertCommand1.Connection = this.oleDbConnection1;
		this.oleDbInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("efternamn", System.Data.OleDb.OleDbType.VarWChar, 50, "efternamn"));
		this.oleDbInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("namn", System.Data.OleDb.OleDbType.VarWChar, 50, "namn"));
		// 
		// oleDbUpdateCommand1
		// 
		this.oleDbUpdateCommand1.CommandText = "UPDATE namn SET efternamn = ?, namn = ? WHERE (id = ?) AND (efternamn = ? OR ? IS" +
			" NULL AND efternamn IS NULL) AND (namn = ? OR ? IS NULL AND namn IS NULL)";
		this.oleDbUpdateCommand1.Connection = this.oleDbConnection1;
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("efternamn", System.Data.OleDb.OleDbType.VarWChar, 50, "efternamn"));
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("namn", System.Data.OleDb.OleDbType.VarWChar, 50, "namn"));
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_id", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(10)), ((System.Byte)(0)), "id", System.Data.DataRowVersion.Original, null));
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_efternamn", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "efternamn", System.Data.DataRowVersion.Original, null));
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_efternamn1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "efternamn", System.Data.DataRowVersion.Original, null));
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_namn", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "namn", System.Data.DataRowVersion.Original, null));
		this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_namn1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "namn", System.Data.DataRowVersion.Original, null));
		// 
		// oleDbDeleteCommand1
		// 
		this.oleDbDeleteCommand1.CommandText = "DELETE FROM namn WHERE (id = ?) AND (efternamn = ? OR ? IS NULL AND efternamn IS " +
			"NULL) AND (namn = ? OR ? IS NULL AND namn IS NULL)";
		this.oleDbDeleteCommand1.Connection = this.oleDbConnection1;
		this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_id", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, false, ((System.Byte)(10)), ((System.Byte)(0)), "id", System.Data.DataRowVersion.Original, null));
		this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_efternamn", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "efternamn", System.Data.DataRowVersion.Original, null));
		this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_efternamn1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "efternamn", System.Data.DataRowVersion.Original, null));
		this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_namn", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "namn", System.Data.DataRowVersion.Original, null));
		this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_namn1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "namn", System.Data.DataRowVersion.Original, null));
		// 
		// oleDbConnection1
		// 
		this.oleDbConnection1.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\\Inetpub\\wwwroot\\net1\\net1.mdb;Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
		// 
		// dataSet11
		// 
		this.dataSet11.DataSetName = "DataSet1";
		this.dataSet11.Locale = new System.Globalization.CultureInfo("sv-SE");
		this.dataSet11.Namespace = "http://www.tempuri.org/DataSet1.xsd";
		this.Load += new System.EventHandler(this.Page_Load);
		((System.ComponentModel.ISupportInitialize)(this.dataSet11)).EndInit();

	}
	\#endregion

}

}

Medlem sedan juni 20011 732 inlägg
#11

OjjOjoOJ nisses moster, vs.net-misshandel! :P ;)

Börja från början, skapa en ny webform (aspx-sida). Stäng igen "Web Form Designer generated code" (klicka på krysset framför om det inte redan är stängt) och glöm att den finns för där behöver du inte skriva någon kod, åtminstone inte i början.

Vad du behöver göra för att fylla din datagrid är att skapa en connection mot din databas, skicka en fråga och sedan ta emot de returnerade svaren. Titta på den kod jag skrev i ett inlägg en bit ovan. Lägg koden i pageloaden för att testa att det fungerar (pageload körs varje gång sidan laddas om). En connectionstring till en access-databas ser ut så här:

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\sökvägen\\din_databas.mdb
Medlem sedan aug. 2003190 inlägg
#12

Suck, tyvärr så måste du nog hjälpa mig lite till(totalt!!! nybörjare) om du orkar!
Sedan tänkte jag att jag inte skulle behöva skriva kod alls!

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
string conn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\inetpub\wwwroot\net1\net1.mdb";
OleDbConnection c = new OleDbConnection(conn);
OleDbDataAdapter a = new OleDbDataAdapter("select * from net1.namn", c);

		DataTable dt = new DataTable();			
		a.Fill(dt);

		datagrid.DataSource = dt;
		datagrid.DataBind();

	}

??

Medlem sedan juni 20011 732 inlägg
#13

Om du inte vill skriva kod alls så får du nog låta någon annan programmera åt dig. :) Visst går det att skapa kopplingar med drag&drop och skriva diverse nycklar och kommandon i dialogrutor men ärligt talat så blir det inte lättare och du gör dig själv en björntjänst.

Koden ovan ser riktig ut, men den fungerar inte? Prova "select * from namn" i din sql-sats.

Sen när du får det att fungera får du bygga ut koden lite, exempelvis är det ju inte så bra att fylla din datagrid varje gång sidan laddas om (eftersom kontrollen i sig sparar dina data över postbacks). Gör en funktion där du returnerar din datatabell och sedan fyller du den endast första gången sidan laddas:

private void Page_Load(object sender, System.EventArgs e) {
  if(!IsPostBack) {
    myDG.DataSource = GetData();
    myDG.DataBind();
}

public DataTable GetData() {
  DataTable dt = new DataTable();
  //fyll din datatabell  
  return dt;
}
Medlem sedan aug. 2003190 inlägg
#14

Den stryker under:
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\inetpub\wwwroot\net1\net1.mdb

och meddelar:
c:\inetpub\wwwroot\net1\WebForm2.aspx.cs(24): Unrecognized escape sequence

Nåt är fel i strängen kanske ?

Medlem sedan juni 200032 967 inlägg
#15

Du måste escape:a dina backslashar, eftersom backslashar är escapetecken.

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\inetpub\\wwwroot\\net1\\net1.mdb

Mvh

Medlem sedan aug. 2003190 inlägg
#16

Ja jag är ganska korkad!

Nu funkar det!!
Men måste jag hålla på och skriva kod :(
Jag trodde att visual.net var visual :e

Ja ja det verkar som om asp verkar lättare! Inte för att jag kan programmera men ändå!

TACK!!!

Medlem sedan juni 20011 732 inlägg
#17

Om du provar 3 timmar asp och 3 timmar .net så upplevs antagligen asp som det lättare alternativet, speciellt om du inte har någon programmeringsbakgrund. Men ganska snart kommer du över tröskeln och inser att det inte alls är svårare, bara annorlunda. Det svåra ligger ofta i att du kommer på dig själv med att göra mycket mer avancerade tillämpningar än tidigare, funktioner som i gammal asp skulle vara VERKLIGT svårt!

Men måste jag hålla på och skriva kod
Jag trodde att visual.net var visual

Ja! :) Du måste skriva kod, mer eller mindre. Det finns inget verktyg där du kan programmera utan att programmera, så att säga. Det finns många genvägar i vs.net, exempelvis om du tittar i din toolbox under data så har du drag&drop för datakopplingar. I designvyn kan du välja "Gridlayout" så är det bara att dra kontroller och html dit du önskar. Färger och bakgrunder sätter du i properties för de olika sidorna/kontrolelrna... ja, det går att klara sig utan att behöva jobba så mycket i koden. Men det blir ju knappast något finlir och begränsningarna är STORA!

Medlem sedan aug. 2003190 inlägg
#18

jag skulle gärna vilja lära mig c#.
Om man vill göra som i asp t.ex. skicka en querystring som request... tas emot och sedan bearbetas, hur görs det i c#?

bygger man hela siten i olika publika object t.ex

public void fnn()
{
Kod.......;
return();
}

public kalle()
{
kod.....
}

string johan()
{
johan = "";
}

eller ??
ja kanske of the tråd men ändå.

Medlem sedan jan. 2004501 inlägg
#19

Request.QueryString["namn"]; om jag inte miss minner mig.

Medlem sedan juni 20011 732 inlägg
#20

Nja, inte riktigt, men du arbetar alltid objektorienterat (även om du kan vara mer eller mindre bra på att dra nytta av det i din programmering). Ett objekt är ju en instans av en klass, det är väl därför mer riktigt om än förenklat att säga att man bygger hela applikationen med klasser. Ett objekt behöver heller inte vara publikt, det beror ju på vilken åtkomst du vill ge objektet.

public int MathFunction(int a, int b) {
  return a + b;
}
protected void SetLabelFunction() {
  Label.Text = MathFunction(2, 3).ToString();
  // en void-funktion returnerar inte något
}

En querystring tar du emot med Request.QueryString och du använder det som vilken annan sträng som helst.

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)