SelectedValueコントロールに問題があります。私は最初のコンボボックスを作成し、そこに次のような方法で結ばれています:これは私が私の形で存在していたコードのみであると仮定すると、SelectedValueコントロールが機能しなくなる原因は何ですか?
private void Form1_Load(object sender, EventArgs e)
{
SqlCeConnection cn = new SqlCeConnection(@"Data Source = \Program Files\ParkSurvey\ParkSurvey.sdf; Persist Security Info = False; Password = *");
cn.Open();
SqlCeCommand cmd = cn.CreateCommand();
cmd.CommandText = "SELECT Name FROM Cities ORDER BY Name ASC";
SqlCeDataAdapter da = new SqlCeDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cn.Close();
cboCities.ValueMember = "CityId";
cboCities.DisplayMember = "Name";
cboCities.DataSource = ds.Tables[0];
cboCities.SelectedIndex = -1;
}
を、コンボボックス(cboCities)がそれに応じて読み込まれます。私の問題は、2番目のコンボボックス(cboParks)に、その都市に関連する公園を記入しようとするときに発生します。 「...... System32.Data」、および:
private void cboCities_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboCities.SelectedIndex > -1)
{
SqlCeConnection cn = new SqlCeConnection(@"Data Source = \Program Files\ParkSurvey\ParkSurvey.sdf; Persist Security Info = False; Password = *");
cn.Open();
SqlCeCommand cmd = cn.CreateCommand();
cmd.CommandText = "SELECT Name FROM [Parks] WHERE CityId =" + cboCities.SelectedValue + " ORDER BY Name ASC";
SqlCeDataAdapter da = new SqlCeDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cn.Close();
cboParks.ValueMember = "ParkId";
cboParks.DisplayMember = "Name";
cboParks.DataSource = ds.Tables[0];
cboParks.SelectedIndex = -1;
}
}
私は私のモバイルアプリケーションをロードすると、最初のコンボボックスが正しく取り込むとの線に沿ってデータを表示実際にはしません。このメソッドは次のように見えますそれらのいずれかを選択すると、「クエリを解析中にエラーが発生しました」という実行時エラーが発生します。 [トークン行番号= 1、トークン行オフセット= 52、トークンエラー中=データ] "。私はここで、SELECT文から問題自体が信じてリードしている:
cmd.CommandText = "SELECT Name FROM [Parks] WHERE CityId =" + cboCities.SelectedValue + " ORDER BY Name ASC";
私はcboCities.SelectedItemにcboCities.SelectedValue、コンボボックスcboParksが適切に移入マイナスフィルタリングを変更する場合(これは、すべてのデータを戻します)。私はCityId(テスト目的のため)だけにそれを変更することもできますし、SELECTステートメントが動作します。
また、このようにパラメータを設定しようとしましたが、DbType System.Data.DataRowViewから既知のSqlCeTypeへのマッピングが存在しないという全く異なるエラーが発生しました。
cmd.CommandText = "SELECT Name FROM [Parks] WHERE CityId = @CityId ORDER BY Name ASC";
cmd.Parameters.AddWithValue("@CityId", cboCities.SelectedValue);
基本的には、SelectedValueが最初のメソッドのCityId ValueMemberを使用して戻していない原因は何ですか?私はこれを理解しようとしている私の髪を引っ張っている。また、選択したデータをコンボボックスにバインドする別の方法がある場合は、共有してください!私はC#の世界には新しく、どんな助けでも大歓迎です。ありがとうございました。 MSDNからも
べきか? –
@UlfÅkerstedt:cboCitiesのデフォルト値を何も設定しないため、都市を選択しようとするまで空白になります。 – PicoDeGallo