私はプログラミングの初心者で、ジョギング データを WPF で追跡するプログラムを作成しようとしています。私の情報が記録されるコンパクトなSQLデータベースとのデータバインディングを持つリストボックスをセットアップしました。Visual Studio を使用している間は正常に動作しますが、プログラムを公開すると、リストボックスにデータベースからの適切な情報が表示されなくなります。プログラムの新しいセッションを開始するたびに、最初からやり直します。最新のログ データをすべて適切に表示するチャートがあるため、情報がデータベースにあることはわかっています。ただし、リストボックスには、その現在のセッション中に記録されたデータのみが表示されます。プログラムを閉じて再度開くと、以前のセッションのデータがリストボックスに表示されなくなりました。
私のコードは次のようになります。
runDataDataSet1 ds;
runDataDataSet1TableAdapters.runDataTableTableAdapter dt;
weightDataSet wds;
weightDataSetTableAdapters.weightTableTableAdapter wdt;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ds = ((runDataDataSet1)(this.FindResource("runDataDataSet1")));
dt = new runDataDataSet1TableAdapters.runDataTableTableAdapter();
dt.Fill(ds.runDataTable);
CollectionViewSource cvs = ((CollectionViewSource)(this.FindResource("runDataTableViewSource")));
cvs.View.MoveCurrentToFirst();
wds = ((weightDataSet)(this.FindResource("weightDataSet")));
wdt = new weightDataSetTableAdapters.weightTableTableAdapter();
wdt.Fill(wds.weightTable);
CollectionViewSource wcvs = ((CollectionViewSource)(this.FindResource("weightTableViewSource")));
wcvs.View.MoveCurrentToFirst();
データを送信するには、送信ボタンが押されたときに次のコードを使用します。
double pace = runData.runPace(runData.milesRun, runData.timeRun);
double pace2 = Math.Round(pace, 1);
double milesDuration = Math.Round((runData.mileDuration(runData.milesRun, runData.timeRun)), 1);
paceTextBox.Text = ((milesDuration) + " min mile");
//UPDATE DATABASE
string myConnectionString = @"Data Source=C:\Users\zfam\My Projects\programming\visual studio\XTrakker\XTrakker\runData.sdf";
string mySelectQuery = "SELECT [int], [runDate], [runDist], [runTime], [runPace] FROM [runDataTable] order by [int] desc";
DataRow dr = ds.Tables["runDataTable"].NewRow();
SqlCeDataAdapter adapter = new SqlCeDataAdapter(mySelectQuery, myConnectionString);
dr["runDate"] = date;
dr["runDist"] = distData;
dr["runTime"] = timeData;
dr["runPace"] = milesDuration;
ds.Tables["runDataTable"].Rows.Add(dr);
SqlCeCommandBuilder projectBuilder = new SqlCeCommandBuilder(adapter);
DataSet newSet = ds.GetChanges(DataRowState.Added);
adapter.Update(newSet, "runDataTable");
adapter.Dispose();
繰り返しますが、ビジュアルスタジオでプログラムを実行している間、これはすべて正常に機能します。公開すると、実際のデータベース ファイルが更新されていても、リスト ボックスには現在のセッションのデータのみが表示されます。おそらく私はこれをすべて間違っていますか?何かご意見は?