Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将其添加到中继器?_C#_Asp.net_Linq To Sql_Repeater_Asp.net Controls - Fatal编程技术网

C# 如何将其添加到中继器?

C# 如何将其添加到中继器?,c#,asp.net,linq-to-sql,repeater,asp.net-controls,C#,Asp.net,Linq To Sql,Repeater,Asp.net Controls,早上好 我正在编写一个简单的测验应用程序。我从我的MS SQL数据库中获取问题和答案。我将如何获取这些信息并将其放入一个转发器控件中,这样我就可以显示6个问题及其答案 或者。。。你知道更好的方法吗 var questions = dc.Questions.ToList().OrderBy(q => Guid.NewGuid()).Take(6); foreach (var q in questions) { litQuestion

早上好

我正在编写一个简单的测验应用程序。我从我的MS SQL数据库中获取问题和答案。我将如何获取这些信息并将其放入一个转发器控件中,这样我就可以显示6个问题及其答案

或者。。。你知道更好的方法吗

 var questions = dc.Questions.ToList().OrderBy(q => Guid.NewGuid()).Take(6);

        foreach (var q in questions)
        {
            litQuestion.Text = q.question1;
            int qId = q.id;

            var ans = dc.Answers.Where(a => a.questionId == qId).ToList();

            litAnswer1.Text = ans[0].answer1.ToString();
            litAnswer2.Text = ans[1].answer1.ToString();
            litAnswer3.Text = ans[2].answer1.ToString();
        }
dc是我的数据上下文


提前感谢。

这应该让您开始:

标记:

<asp:repeater ID="repeater" runat="server" OnItemDataBound="repeater_OnItemDataBound">
    <ItemTemplate>
           <asp:Label id="lblQuestion" runat="server" />
           <asp:Label id="lblAnswer" runat="server" />                 
    </ItemTemplate>
</asp:repeater>     

如果你不知道每个问题的答案数量,你可以使用嵌套的重复器

<asp:Repeater runat="server" ID="questionsRep" OnItemDataBound="QuestionsRep_ItemDataBound">

        <ItemTemplate>
            <asp:Label runat="server" Text='<%# Eval("question1") %>'></asp:Label>
            <asp:Label runat="server" Text='<%# Eval("id") %>'></asp:Label>

            <asp:Repeater runat="server" ID="answersRep">

                <ItemTemplate>
                    <asp:Label runat="server" Text='<%# Eval("answer1") %>'></asp:Label>
                </ItemTemplate>

            </asp:Repeater>

        </ItemTemplate>

    </asp:Repeater>

您还可以使用服务器端标记(如果您只是显示问题和答案),而不是在中继器的数据绑定事件中绑定:

aspx:


问题:
:
正确答案:

问题编号、问题和答案将是绑定列表/数据表的属性/列。

除了其他答案之外,这是一种非常简单的方法:

假设您的问题对象包含一组可用答案,称为答案

<asp:Repeater runat="server" DataSourceID="ods">
    <ItemTemplate>
        <%# Eval("QuestionText") %>
        <br />
        <asp:RadioButtonList runat="server" DataSource='<%# Eval("Answers") %>' DataTextField="AnswerText" DataValueField="ID">
        </asp:RadioButtonList>
    </ItemTemplate>
</asp:Repeater>


这会产生如下结果:

编辑1 ods数据源:

    <asp:ObjectDataSource ID="ods" runat="server" 
        SelectMethod="GetQuestions" 
        TypeName="WebApplication1.Questions.QuestionsContext">
    </asp:ObjectDataSource>

    public IEnumerable<Question> GetQuestions()
    {
        // return your questions
    }

public class Question
{
    public Guid ID { get; set; }
    public string QuestionText { get; set; }
    public IEnumerable<Answer> Answers { get; set; }
    public bool MultipleAnswers { get; set; }
    public bool IsCorrect { get; set; }

    public Question()
    {
        this.Answers = Enumerable.Empty<Answer>();
    }
}
public class Answer
{
    public Guid ID { get; set; }
    public Question Question { get; set; }
    public bool IsCorrect { get; set; }
    public string AnswerText { get; set; }
    public bool WasSelected { get; set; }
}

公共IEnumerable GetQuestions()
{
//回答你的问题
}
公开课问题
{
公共Guid ID{get;set;}
公共字符串QuestionText{get;set;}
公共IEnumerable答案{get;set;}
公共布尔乘法器{get;set;}
公共bool IsCorrect{get;set;}
公众问题(
{
this.Answers=Enumerable.Empty();
}
}
公开课答案
{
公共Guid ID{get;set;}
公共问题{get;set;}
公共bool IsCorrect{get;set;}
公共字符串应答文本{get;set;}
已选择公共布尔值{get;set;}
}

“abc_quick.Question”不包含“Answers”的定义,并且找不到接受“abc_quick.Question”类型的第一个参数的扩展方法“Answers”(是否缺少using指令或程序集引用?)?有什么想法吗?我想你的问题对象不包含属性答案。您必须再次从dc获取它们(请参见我的编辑)您是如何获取这些的?我可以把你和ods的连接看作是一个数据源吗?@Jupaol:完美的答案。两年后帮助了我!只是一个观察:课堂提问包含答案,课堂回答包含问题。循环引用,否则我遗漏了什么!
        <asp:Repeater ID="quizRepeater" runat="server">
    <ItemTemplate>
        <div class="fullWidthDiv">
            <span class="rightAlignedForQuestion">
                <asp:Label ID="questionNumberLabel" runat="server">
        Question
        <%# DataBinder.Eval(Container.DataItem,"QuestionNumber") %>:
                </asp:Label>
            </span><span class="leftAlignedForQuestion">
                <label>
                    <%# DataBinder.Eval(Container.DataItem,"Question") %>
                </label>
            </span>
        </div>
        <div class="fullWidthDiv">
            <span class="leftAlignedForOptions">
            Correct Answer: 
                <asp:Label CssClass="boldFont" id="correctAnswerLabel" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Answer") %>'>
                </asp:Label>
            </span>
        </div>
    </ItemTemplate>
</asp:Repeater>
<asp:Repeater runat="server" DataSourceID="ods">
    <ItemTemplate>
        <%# Eval("QuestionText") %>
        <br />
        <asp:RadioButtonList runat="server" DataSource='<%# Eval("Answers") %>' DataTextField="AnswerText" DataValueField="ID">
        </asp:RadioButtonList>
    </ItemTemplate>
</asp:Repeater>
    <asp:ObjectDataSource ID="ods" runat="server" 
        SelectMethod="GetQuestions" 
        TypeName="WebApplication1.Questions.QuestionsContext">
    </asp:ObjectDataSource>

    public IEnumerable<Question> GetQuestions()
    {
        // return your questions
    }

public class Question
{
    public Guid ID { get; set; }
    public string QuestionText { get; set; }
    public IEnumerable<Answer> Answers { get; set; }
    public bool MultipleAnswers { get; set; }
    public bool IsCorrect { get; set; }

    public Question()
    {
        this.Answers = Enumerable.Empty<Answer>();
    }
}
public class Answer
{
    public Guid ID { get; set; }
    public Question Question { get; set; }
    public bool IsCorrect { get; set; }
    public string AnswerText { get; set; }
    public bool WasSelected { get; set; }
}