» »

[C#] DATA GRID VIEW

[C#] DATA GRID VIEW

iggy1 ::

Kako bi naredil, da imam v grid pogledu vse podatke iz podatkovne baze ko zaženem aplikacijo. Kako nafilam DataGridView?


Lp,
Igor

Kekec ::

iggy1 ::

protected void Page_Load(Object Src, EventArgs E)
{

SqlConnection myConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\#### PODATKOVNE BAZE ####\imenik.mdf;Integrated Security=True;User Instance=True");

SqlDataAdapter myCommand = new SqlDataAdapter("Select * From Stiki", myConnection);

imenikDataSet ds = new imenikDataSet();
myCommand.Fill(ds);

DataView source = new DataView(ds.Stiki);

dataGridView1.DataSource = source ;
dataGridView1.DataBind();
}

Ta koda mi ne dela in sicer ni javi error
'System.Windows.Forms.DataGridView' does not contain a definition for 'DataBind'

Mi zna kod pomagati kaj bi lahko bilo. Ali moram kje definirati DataBind?

Kekec ::

daj se iz aspx datoteke da vidim kako si objekte na strani nasatvil

iggy1 ::

Delam alpikacijo ne spletne strani.

MaCoFaCo ::

Windows aplikacijo ima :)

MaCoFaCo ::

System.Data.DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("tabela1"));
ds.Tables[0].Columns.Add("stolpec1");
ds.Tables[0].Rows.Add(new object[] {"vrednost1"});

dataGridView1.DataMember = "tabela1";
dataGridView1.DataSource = ds;

iggy1 ::

protected void Page_Load(Object Src, EventArgs E)
{
SqlConnection myConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\#### PODATKOVNE BAZE ####\imenik.mdf;Integrated Security=True;User Instance=True");

SqlDataAdapter myCommand = new SqlDataAdapter("Select * From Stiki", myConnection);
System.Data.DataSet ds = new DataSet();
ds.Tables.Add(new DataTable("Stiki"));
ds.Tables[0].Columns.Add("Priimek");
ds.Tables[0].Rows.Add(dataGridView1);

dataGridView1.DataMember = "Stiki";
dataGridView1.DataSource = ds;
}

Still nothing!

Kekec ::

My bad, sem avtomatsko mislil da delaš web page no za začetek pojdi sem za nadaljevanje pa je metoda Page_load bila mišljena za web formo tako da poglej primere na linku!

MaCoFaCo ::

Ammmmm.

Ti moraš dataset nafilat s pomočjo DataAdapterja!

SqlDataAdapter myCommand = new SqlDataAdapter("Select * From Stiki", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds);
if (ds.Tables.Count == 1)
{
    dataGridView1.DataMember = ds.Tables[0].TableName; //dataset lahko vsebuje več tabel, zato mu moraš povedat katero naj vzame!
    dataGridView1.DataSource = ds;
}


ALI:

SqlDataAdapter myCommand = new SqlDataAdapter("Select * From Stiki", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds);
if (ds.Tables.Count == 1)
{
    dataGridView1.DataSource = ds.Tables[0]; //bindamo kar datatable
}


S tisto tvojo kodo zgoraj si mu samo pripravil DataAdapter, ki pa nikoli ni ničesar izvršil. Potem si kreiral prazen dataset in skušal to bindati na grid. DataSet je bil seveda prazen, itak da ti ne bo nič prikazal.

Kodo moraš razumeti in ne delati samo copy/paste :P

Nasvet: nauči se uporabljati dokumentacijo.

Kekec ::

pravi izraz je RTFM ;) malo heca

frudi ::

v bistvu lahko z DataAdapterjem nafilaš kar DataTable, DataSeta sploh ne rabiš:
DataTable tbl = new DataTable();
myCommand.Fill(tbl);
dataGridView1.DataSource = tbl;

in če smo že pri detajlih - ni ravno lepo, da DataAdapter imenuješ myCommand. verjetno si najprej to spremenljivko uporabil za SqlCommand. lepo je, da imena spremenljivk nekako odražajo, za kak tip objekta gre.

nato pa lahko vso kodo še lepo zaviješ v try-catch blok, kar je dobro naredit pri vseh metodah, ki dostopajo do baze. nekaj takega:
        SqlConnection myConnection = null;
        SqlDataAdapter myDataAdapter = null;
        DataTable tbl = null;
        string myCnnString = "tu pride connection string";
        try
        {
            myConnection = new SqlConnection(myCnnString);
            myDataAdapter = new SqlDataAdapter("SELECT * FROM Stiki", myConnection);
            tbl = new DataTable();
            myDataAdapter.Fill(tbl);
            this.dataGridView1.DataSource = tbl;
        }
        catch (Exception ex)
        {
            MessageBox.Show("Napaka!" + Environment.NewLine + ex.Message);
        }
        finally
        {
            if (myDataAdapter != null) { myDataAdapter.Dispose(); }
            if (myConnection != null) { myConnection.Dispose(); }
        }
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)

iggy1 ::

Vsem hvala, ker ste mi pomagali še posebej tebi frudi, ker tvoja koda dela kot urca.


Drugače pa za ostale, če bodo kdaj rabili pri frudijevi kodi je treba pr vrstici
DataTable tb1 = new DataTable("Stiki");

dodati spredaj še
System.Data.DataTable tb1 = new DataTable("Stiki");


Lp,
Igor

Kekec ::

če dodaš namespace
using System.Data;

potem to ni potrebno!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# težava

Oddelek: Programiranje
233456 (2302) mladec
»

[C#, SQLite] update to database

Oddelek: Programiranje
5605 (484) Yacked2
»

[C#,SQL]

Oddelek: Programiranje
51137 (1050) JanOlMajti
»

[C#] Ne prkaže takoj podatkov

Oddelek: Programiranje
81066 (929) darkolord
»

[C#] Dostop do objekta iz različnih form

Oddelek: Programiranje
182089 (1802) Kekec

Več podobnih tem