根据下面的代码,我曾经使用以下两行代码根据 QuestionId 显示问题及其相关的多项选择选项:
<asp:Label ID="Label3" runat="server" Font-Bold="True" Text='<%# Eval("QuestionID") %>'></asp:Label>
<strong>)</strong>
<asp:Label ID="Label2" runat="server" Font-Bold="True" Text='<%# Eval("Question") %>'></asp:Label></td>
一切都会正确显示。
问题在于问题的顺序不正确。
例如,有几个调查;员工调查、薪酬调查、培训调查等
使用QuestionId
,如果我根据员工调查创建一个问题,第一个问题是questionId
#1,第二个问题是questionId
#2。
如果我决定根据薪资调查创建问题,第一个问题将从questionId
#3 开始,而不是从questionId
#1 重新开始,依此类推。
为了让每个问题都能从 #1 开始调查,我添加了另一个名为questionOrder
.
这允许每个调查从 #1 开始其问题。
我可以用这个存储过程来完成这个:
CREATE PROCEDURE [dbo].[addQuestion](@surveyID INT, @question VARCHAR(255), @AnswerType CHAR(1), @CorrectAnswer NVARCHAR(50))
AS
DECLARE @qnum INT
SELECT @qnum = ISNULL(MAX(QuestionOrder),0)+1
FROM SurveyQuestions WHERE SurveyID = @surveyID
INSERT INTO SurveyQuestions(SurveyID, Question, AnswerType,CorrectAnswer,QuestionOrder)
VALUES (@SurveyID, @Question, @AnswerType,@CorrectAnswer,@qnum)
然后我在我的标记上使用它:
<asp:Label ID="Label3" runat="server" Font-Bold="True" Text='<%# Eval("QuestionOrder") %>'></asp:Label>
<strong>)</strong>
<asp:Label ID="Label2" runat="server" Font-Bold="True" Text='<%# Eval("Question") %>'></asp:Label></td>
问题是现在只显示问题而不显示多项选择。
你知道我需要修改什么来解决这个问题吗?
我不确定这是 SQL 问题还是 .net 问题。
如果被问到,我会发布额外的代码。
非常感谢提前
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
SelectCommand="SELECT * FROM SurveyQuestions where surveyId = @SurveyId">
<SelectParameters>
<asp:SessionParameter SessionField="SurveyId" Type="Int32" Name="SurveyId" DefaultValue="0" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SQLChoicesDataSouce" runat="server" ConnectionString="<%$ ConnectionStrings:DBConnectionString %>"
SelectCommand="SELECT Title From Survey WHERE SurveyId = @SurveyId">
<SelectParameters>
<asp:SessionParameter SessionField="SurveyId" Type="Int32" Name="SurveyId" DefaultValue="0" />
</SelectParameters>
</asp:SqlDataSource>