1

私はここで初心者で、映画を追跡するためのデータベースを構築しています(練習用)。とにかく、チェックボックス リストを使用してジャンル (アクション、コメディ、ドラマ、ホラーなど) を入力しています。チェックボックスリストを取得してdbテーブルに保存し、保存した結果を取得してチェックボックスリストをプリロードすることができましたが、問題は新しいジャンルのチェックを外してチェックし、dbに保存できることです。

GenreCheckBox リストの項目をチェックして db テーブルに保存するコードを次に示します。

for (int i = 0; i < GenreCheckBoxList.Items.Count; i++)
    {

        if (GenreCheckBoxList.Items[i].Selected)
        {
            cmd2.Parameters.AddWithValue("MovieID", MovieID);
            cmd2.Parameters.AddWithValue("@GenreID", GenreCheckBoxList.Items[i].Value);
            cmd2.Parameters.AddWithValue("Status", Status);
            cmd2.ExecuteNonQuery();
            cmd2.Parameters.Clear();
        }

    }

以前に保存した GenreCheckBoxList の結果を表示する方法は次のとおりです

public void LoadGenreCheckBoxList()
        {
            GenreCheckBoxList.DataBind();

            string MovieID = Session["MovieID"].ToString();

            SqlConnection cnn = new SqlConnection("Data Source=STEVE-F32A48EEB;Initial Catalog=Sinema;Integrated Security=True");
            cnn.Open();
            SqlCommand cmd2 = new SqlCommand("SELECT Genre.GenreType, Genre.GenreID, GenreLine.GenreID FROM Genre INNER JOIN GenreLine ON Genre.GenreID = GenreLine.GenreID INNER JOIN Movie ON GenreLine.MovieID = Movie.MovieID WHERE GenreLine.MovieID = @MovieID AND GenreLine.Status = 1", cnn);

            cmd2.Parameters.AddWithValue("@MovieID", MovieID);
            cmd2.ExecuteScalar();


            SqlDataReader rdr2 = cmd2.ExecuteReader();
            while (rdr2.Read())
            {
                ListItem currentCheckBox = GenreCheckBoxList.Items.FindByValue(rdr2["GenreID"].ToString());

                if (currentCheckBox != null)
                {
                    currentCheckBox.Selected = true;
                }
            }


            rdr2.Close();
        }

今私がやりたいことは、編集ページに結果が表示された後、いくつかのチェックを外したり、新しいジャンルをチェックしたり、すでに選択されているチェック済みのジャンルを複製してデータベースに保存したりしないようにすることです.

どこから始めればよいかさえわかりません。どんな方向でも大いに役立ちます!ジャンルチェックボックスリストが既にチェックされている場合はデータベースに保存されず、まだチェックされていない場合はデータベースに保存されるという条件を満たすifステートメントを作成するにはどうすればよいですか? ありがとう。

4

1 に答える 1

0

2 つの選択肢があります。

答え 1

ドキュメントに従って、チェックボックスを 3 段階のチェックボックスに変更できます。ロード時に、データベースに基づいてチェックされたチェックボックスに対してこれを行い、「チェックを外して保存」、「どちらの方法でも保存しない」の 3 つの状態を切り替えます (つまり、データベースをそのままにしておきます)。 、および「チェックを付けて保存」。残りのチェックボックスの状態は 1 つだけです。

checkBox1.IsThreeState = true;
checkBox1.IsChecked = null;

答え 2

各チェックボックスの元の状態をそのTag属性に保存します。データベースにセーブ バックするときは、(bool)checkBox1.Tag == checkBox1.IsChecked. その場合は、スキップしてください。

于 2012-10-07T07:09:39.667 に答える