0

こんばんは/朝みんな、

昨日、テーブルをループしてその値をハッシュテーブルに割り当てる方法についていくつかのヘルプを受け取りました。これは現在、以下のコードで正しく機能しています。以下のメソッドから返される質問は全部で10個あります。

public Hashtable GetExamAnswers(int UserID)
    {
        try
        {
            SqlConnection Connection = new SQLAccess().CreateConnection();
            SqlCommand Command = new SqlCommand("GetAllExamAnswersForUser", Connection);
            Command.CommandType = System.Data.CommandType.StoredProcedure;
            Command.Parameters.AddWithValue("@UserID", UserID);
            SqlDataReader da = Command.ExecuteReader();
            int i = 1;
            while (da.Read())
            {
                Details.Add("QuestionNumber" + i, da["UserAnswer"]);
                i = i + 1;
            }
            Connection.Close();
            da.Close();
            return Details;
        }
        catch
        {
            Console.WriteLine("Problem Updating the User`s Details");
            return Details;
        }
    }

「詳細」にカーソルを合わせると、このようにレイアウトされます

Question1      4
Question2      5
Question3      Y
Question4      9
Question5      10

質問10まで

ハッシュテーブルから値を取得し、関連するテキストボックスに関連する値を割り当てようとしています。

上記のメソッドから戻った後の私のコードはここにあります

ExamAnswers = obj_Methods.GetExamAnswers(Convert.ToInt32(Request.QueryString["uid"]));
        if (ExamAnswers.Count > 0)
        {
            foreach (DictionaryEntry dict in ExamAnswers)
            {
              Q1Answer.Text = dict......;
              Q2Answer.Text = dict......;
              Q3Answer.Text = dict......;

            }
        }

ExamAnswersはハッシュテーブルであり、返される値を保持します。Q1answer.TextにExamAnswersのQuestion1の値を割り当てようとしていますが、これを実現する方法に苦労しています。

Q1Answer.Text = ExamAnswers.key["Question1"].value;

しかし、役に立たないので、誰かが解決策を手伝ってくれるでしょうか。

ありがとうございました

4

4 に答える 4

0

最初のコードスニペットでは'QuestionNumber' + iなく、キーを設定します。'Question' + i正しいキー値を探していることを確認してください。

また、ExamAnswersをループする必要はありません。

ExamAnswers = obj_Methods.GetExamAnswers(Convert.ToInt32(Request.QueryString["uid"]));

if (ExamAnswers.Count > 0)
{
      Q1Answer.Text = ExamAnswers["QuestionNumber1"].value;
      Q2Answer.Text = ExamAnswers["QuestionNumber2"].value;
      Q3Answer.Text = ExamAnswers["QuestionNumber3"].value;
      ...
}
于 2012-05-03T21:12:23.003 に答える
0

実際、この場合、おそらく配列を使用して回答を保存したいと思うでしょう。この例でハッシュテーブルを使用するメリットはありません。

于 2012-05-03T21:26:38.350 に答える
0

これはステートメントを使用する状況ではありません。foreachキーは前もってわかっていて、キーは 1 つのコントロールだけにマップされるからです。投稿したコードを実行するだけです。

Q1Answer.Text = ExamAnswers["Question1"].ToString();
于 2012-05-03T21:09:18.817 に答える
0

より簡単にします:

        Hashtable hash = new Hashtable();
        hash.Add(1, "a");
        hash.Add(2, "b");

        string a = hash[1].ToString();
于 2012-05-03T21:09:27.963 に答える