Hi
i want to get data from my access table and put in in a listview in my program.
I'm newbie in C#. Can anyone help me with this?
I have a metod called oppnaAdressBok.
here is the code:
void oppnaAdressBok(object sender, EventArgs ex)
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\..\\persondata.mdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string query = "select * form data";
OleDbDataAdapter myAdapter = new OleDbDataAdapter(query, myConnection);
DataSet personData = new DataSet();
myAdapter.Fill(personData);
ListViewItem nyKontakt = new ListViewItem();
//Repetera för varje tabell
foreach (DataTable table in personData.Tables)
{
//repetera för varje row i tabellen
foreach (DataRow row in table.Rows)
{
// code here.
}
}
}
Loading
Satish KathiPosted Jul 17, 2008, 11:22 AM
Here is my code
I have exactly copied your code, I have commented the menustrip code and changed the connection, table name, provider as per my requirement Reast all code is same and it is working fine
Please check whether you have Data in the table
Debug and check whether Table is returning rows
public partial class LstVw2 : Form{
ListView kontaktLista; public LstVw2(){
InitializeComponent();
//Smått o gott till huvudfönstret this.Text = "Adressboken"; this.StartPosition = FormStartPosition.CenterScreen; this.Width = 800; this.Height = 600; //håller den korrekta storleken på ramen this.MinimumSize = this.Size; this.MaximumSize = this.MinimumSize;
//uppdaterad meny //mainMenuStrip.Dock = DockStyle.Top; //mainMenuStrip.Text = "Meny"; //fileTool.Text = "&Arkiv"; //arkivNyKontakt.Text = "Ny kontakt"; //arkivRaderaKontakt.Text = "Ta bort kontakt"; //arkivSokaKontakt.Text = "Sök kontakt"; //arkivAvsluta.Text = "Avsluta"; //mainMenuStrip.Items.Add(fileTool); //fileTool.DropDownItems.AddRange(new ToolStripItem[] { arkivNyKontakt, separator, arkivRaderaKontakt, separator, arkivSokaKontakt, separator, arkivAvsluta }); //arkivNyKontakt.Click += new EventHandler(nyKontakt_Click); //arkivAvsluta.Click += new EventHandler(avsluta_Click); //this.Controls.Add(mainMenuStrip); //Lista för befintliga kontakterkontaktLista =
new ListView();kontaktLista.Bounds =
new Rectangle(new Point(100, 35), new Size(670, 450));kontaktLista.View =
View.Details;kontaktLista.GridLines =
false;kontaktLista.Sorting =
SortOrder.Ascending; //Namn på kolumnerna //this.kontaktLista.Columns.Add("Id", 100, HorizontalAlignment.Left); this.kontaktLista.Columns.Add("Förnamn", 100, HorizontalAlignment.Left); this.kontaktLista.Columns.Add("Efternamn", 150, HorizontalAlignment.Left); //this.kontaktLista.Columns.Add("Telefon", 100, HorizontalAlignment.Left); //this.kontaktLista.Columns.Add("Mobil", 100, HorizontalAlignment.Left); //this.kontaktLista.Columns.Add("E-post", 220, HorizontalAlignment.Left); //listan läggs till this.Controls.Add(kontaktLista); //this.ShowDialog(); //this.Load += new System.EventHandler(this.AdressBok_Load); this.ResumeLayout(false);}
private void LstVw2_Load(object sender, EventArgs e){
//string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\..\\persondata.mdb"; string connectionString = ConfigurationManager.ConnectionStrings["MyConnection1"].ToString(); //OleDbConnection myConnection = new OleDbConnection(connectionString); SqlConnection myConnection = new SqlConnection(connectionString); string query = "SELECT * FROM employee"; //OleDbDataAdapter myAdapter = new OleDbDataAdapter(query, myConnection); SqlDataAdapter myAdapter = new SqlDataAdapter(query, myConnection); DataSet personData = new DataSet();myAdapter.Fill(personData);
//Repetera för varje tabell foreach (DataTable tables in personData.Tables){
//repetera för varje row i tabellen foreach (DataRow row in tables.Rows){
ListViewItem lvi = new ListViewItem(new string[] { //row[0] != System.DBNull.Value ? row[0].ToString() : string.Empty,row[0] != System.
DBNull.Value ? row[0].ToString() : string.Empty,row[1] != System.
DBNull.Value ? row[1].ToString() : string.Empty});kontaktLista.Items.Add(lvi);
}
}
}
}
Jonny BergstromPosted Jul 17, 2008, 10:39 AM
My program starts, i get no error but the listview table contains no data.
Satish KathiPosted Jul 17, 2008, 10:23 AM
Jonny BergstromPosted Jul 17, 2008, 6:41 AM
In my constuctor i have this information:
public AdressBok()
{
//Smått o gott till huvudfönstret
this.Text = "Adressboken";
this.StartPosition = FormStartPosition.CenterScreen;
this.Width = 800;
this.Height = 600;
//håller den korrekta storleken på ramen
this.MinimumSize = this.Size;
this.MaximumSize = this.MinimumSize;
//uppdaterad meny
mainMenuStrip.Dock = DockStyle.Top;
mainMenuStrip.Text = "Meny";
fileTool.Text = "&Arkiv";
arkivNyKontakt.Text = "Ny kontakt";
arkivRaderaKontakt.Text = "Ta bort kontakt";
arkivSokaKontakt.Text = "Sök kontakt";
arkivAvsluta.Text = "Avsluta";
mainMenuStrip.Items.Add(fileTool);
fileTool.DropDownItems.AddRange(new ToolStripItem[] {arkivNyKontakt, separator, arkivRaderaKontakt, separator, arkivSokaKontakt, separator, arkivAvsluta});
arkivNyKontakt.Click += new EventHandler(nyKontakt_Click);
arkivAvsluta.Click += new EventHandler(avsluta_Click);
this.Controls.Add(mainMenuStrip);
//Lista för befintliga kontakter
kontaktLista = new ListView();
kontaktLista.Bounds = new Rectangle(new Point(100, 35), new Size(670, 450));
kontaktLista.View = View.Details;
kontaktLista.GridLines = false;
kontaktLista.Sorting = SortOrder.Ascending;
//Namn på kolumnerna
//this.kontaktLista.Columns.Add("Id", 100, HorizontalAlignment.Left);
this.kontaktLista.Columns.Add("Förnamn", 100, HorizontalAlignment.Left);
this.kontaktLista.Columns.Add("Efternamn", 150, HorizontalAlignment.Left);
//this.kontaktLista.Columns.Add("Telefon", 100, HorizontalAlignment.Left);
//this.kontaktLista.Columns.Add("Mobil", 100, HorizontalAlignment.Left);
//this.kontaktLista.Columns.Add("E-post", 220, HorizontalAlignment.Left);
//listan läggs till
this.Controls.Add(kontaktLista);
//this.ShowDialog();
//this.Load += new System.EventHandler(this.AdressBok_Load);
this.ResumeLayout(false);
}
And in my metod for loading the data i wrote:
void oppnaAdressBok(object sender, EventArgs ex)
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\..\\persondata.mdb";
OleDbConnection myConnection = new OleDbConnection(connectionString);
string query = "select * from data";
OleDbDataAdapter myAdapter = new OleDbDataAdapter(query, myConnection);
DataSet personData = new DataSet();
myAdapter.Fill(personData);
//Repetera för varje tabell
foreach (DataTable tables in personData.Tables)
{
//repetera för varje row i tabellen
foreach (DataRow row in tables.Rows)
{
ListViewItem lvi = new ListViewItem(new string[] {
//row[0] != System.DBNull.Value ? row[0].ToString() : string.Empty,
row[0] != System.DBNull.Value ? row[0].ToString() : string.Empty,
row[1] != System.DBNull.Value ? row[1].ToString() : string.Empty});
kontaktLista.Items.Add(lvi);
}
}
}
What am i doing wrong?
Satish KathiPosted Jul 16, 2008, 4:31 PM
It appears to be you want to create multi column list view
So create columns for the ListView either in Designer view or within the code here is the code to create columns in code
listView2.Columns.Add("Id", 30, HorizontalAlignment.Right);
listView2.Columns.Add("Name", 80, HorizontalAlignment.Left);
listView2.Columns.Add("Job", 50, HorizontalAlignment.Left);
Also set the View property of the ListView to details either in design mode or in the code
listView1.View = View.Details;
And now the code required by you is as follows
foreach(DataRow row in tables.Rows)
{
ListViewItem lvi = new ListViewItem(new string[] {row[0] != System.DBNull.Value ? row[0].ToString() : string.Empty,
row[1] != System.DBNull.Value ? row[1].ToString() : string.Empty,
row[3] != System.DBNull.Value ? row[3].ToString() : string.Empty});
listView2.Items.Add(lvi);
}