protected override void OnLoad(EventArgs e) { base.OnLoad(e); DataTable dtArtists = new DataTable(); #region fetch data for artists Mono.Data.Sqlite.SqliteConnection cn = new Mono.Data.Sqlite.SqliteConnection("library.sqlite"); Mono.Data.Sqlite.SqliteCommand comm = new Mono.Data.Sqlite.SqliteCommand(cn); Mono.Data.Sqlite.SqliteDataAdapter adapter = new Mono.Data.Sqlite.SqliteDataAdapter(comm); comm.CommandText = @" SELECT name, id, fetched FROM artists "; adapter.Fill(dtArtists); #endregion if (dtArtists.Rows.Count == 0) { List <SubsonicItem> artists = Subsonic.GetIndexes(); foreach (SubsonicItem artist in artists) { DataRow dr = dtArtists.NewRow(); dr["name"] = artist.name; dr["id"] = artist.id; dr["feteched"] = DateTime.Now.ToString(); dtArtists.Rows.Add(dr); comm = new Mono.Data.Sqlite.SqliteCommand(cn); comm.CommandText = @" INSERT INTO artists (name, id, fetched) VALUES(@name, @id, @fetched); "; comm.Parameters.AddWithValue("@name", artist.name); comm.Parameters.AddWithValue("@id", artist.id); comm.Parameters.AddWithValue("@fetched", DateTime.Now.ToString()); if (cn.State != ConnectionState.Open) { cn.Open(); } comm.ExecuteNonQuery(); } if (cn.State != ConnectionState.Closed) { cn.Close(); } } rptArtists.DataSource = dtArtists; rptArtists.DataBind(); }
private void btnGetSongs_Click(object sender, EventArgs e) { artists = Subsonic.GetIndexes(); tvArtists.BeginUpdate(); string firstLetter = ""; int treeIndex = -1; foreach (KeyValuePair <string, string> kvp in artists) { string thisFirstLetter = GetFirstLetter(kvp.Key); if (thisFirstLetter != firstLetter) { firstLetter = thisFirstLetter; tvArtists.Nodes.Add(firstLetter); treeIndex++; } tvArtists.Nodes[treeIndex].Nodes.Add(kvp.Key); } tvArtists.EndUpdate(); }