1

次のエラーが表示されます: 新しい表示メンバー C# にバインドできません

        sConn = new SqlConnection(sStr);
        daSched = new SqlDataAdapter("Select Subject from Schedules where Username = '" + lblUsername.Text + "'", sConn);
        dsSched = new DataSet();
        daSched.Fill(dsSched, "Schedules");
        dsSched.Tables["Schedules"].PrimaryKey = new DataColumn[] { dsSched.Tables["Schedules"].Columns["ScheduleID"] };

        cbxSubject.DataSource = dsSched.Tables["Schedules"];
        cbxSubject.DisplayMember = "Schedule";
        cbxSubject.ValueMember = "ScheduleID";
        cbxSubject.Text = "Choose Subject";

どこが間違っていたのかわかりません。これは、スケジュール表のプレビューです: http://i47.tinypic.com/1zzoz5z.png

助けてくれてありがとう。

4

1 に答える 1

2

テーブルに「Schedule」というフィールドがないため、コントロールが検索できる Schedule というメンバーがなく、Subject のみを選択しています。

ScheduleID はすでにプライマリ キーであるため、Sql クエリを次のように変更することをお勧めします。

Select ScheduleID, Subject From... (また、おそらくパラメータ化する必要があります)

この行 ->dsSched.Tables["Schedules"].PrimaryKey = new DataColumn[] { dsSched.Tables["Schedules"].Columns["ScheduleID"] };は不要です。

私が言えることから、あなたはあなたのディスプレイメンバーを「サブジェクト」にしたいと思っています

また、接続を開く必要があります(投稿には表示されません)-より理想的には、usingステートメントでラップします

何かのようなもの:

using (SqlConnection con = new SqlConnection(connectionString))
    {
        string userName = lblUsername.Text;
        con.Open(); 
        var adapter = new SqlDataAdapter("Select ScheduleID, Subject From 
                                 Schedules Where Username = @username", conn);
        adapter.Parameters.Add("@username", SqlDbType.VarChar, 50, userName)
        var dsSched = new DataSet();
        adapter.Fill(dsSched);

        cbxSubject.DataSource = dsSched.Tables[0];
        cbxSubject.DisplayMember = "Subject";
        cbxSubject.ValueMember = "ScheduleID";
        cbxSubject.DataBind();

    }
于 2012-07-19T02:02:13.750 に答える