晚上好/早上好,
昨天我收到了一些关于如何遍历表并将其值分配给哈希表的帮助,我现在使用下面的代码正确地工作,从下面的方法返回总共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;
}
}
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;
}
}
当我将鼠标悬停在“细节”上时,它的布局就像这样
等一直到问题10 Question1 4
Question2 5
Question3 Y
Question4 9
Question5 10
我现在正试图从哈希表中获取值并将相关值分配给相关的文本框
从上面的方法返回之后继承我的代码
Question1 4
Question2 5
Question3 Y
Question4 9
Question5 10
ExamAnswers是一个哈希表并保存返回的值,我试图在ExamAnswers中分配Q1的值为问题1的Q1answer.Text,但是我在如何实现这个目标上挣扎,我试着说
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 = 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......;
}
}
但无济于事,有人可以帮我解决问题。
谢谢
答案 0 :(得分:0)
在这种情况下,您不会使用foreach
语句,因为您提前知道了键并且它们只映射到一个控件。您只需执行您发布的代码,其中
Q1Answer.Text = ExamAnswers["Question1"].ToString();
答案 1 :(得分:0)
做得更简单:
Hashtable hash = new Hashtable();
hash.Add(1, "a");
hash.Add(2, "b");
string a = hash[1].ToString();
答案 2 :(得分: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;
...
}
答案 3 :(得分:0)
实际上,在这种情况下,您可能希望使用数组来存储答案。在此示例中使用哈希表没有任何好处。