如何使用 LINQ 和 asp.net 中的多视图控件每次从数据库获取单行

本文关键字:控件 数据库 单行 获取 视图 LINQ 何使用 asp net | 更新日期: 2023-09-27 18:37:25

我正在创建一个名为在线考试门户的项目。学生可以选择Technology并进行考试。学生可以从下拉列表中选择技术。

特定技术的问题来自数据库。现在我想在一个视图(多视图控件)中一次一个问题,也就是说,当学生单击下一步按钮时,只有第二个问题应该显示在同一视图中。我能够检索一个问题,但不能提前。

我尝试了以下代码:

ScheduleExam.Aspx :

<div class="col-md-6">
            <div class="box-body">

                <div class="form-group">
                    <asp:MultiView ID="mvExam" runat="server">
                        <asp:View ID="viewTech" runat="server">
                            <asp:DropDownList ID="ddlTechnology" runat="server" CssClass="form-control select2"></asp:DropDownList><br /><br />
                            <asp:Button ID="btnSchedule" Text="Schedule" CssClass="btn btn-primary" OnClick="btnSchedule_Click" runat="server" />
                        </asp:View>
                        <asp:View ID="viewTest" runat="server">
                           <asp:Label ID="lblQtnNum" runat="server">&nbsp;&nbsp;&nbsp;</asp:Label><asp:Label ID="lblQuestion" runat="server"></asp:Label><br /><br />
                            <asp:RadioButton ID="rdbOpt1" runat="server" /><br />
                            <asp:RadioButton ID="rdbOpt2" runat="server" /><br />
                            <asp:RadioButton ID="rdbOpt3" runat="server" /><br /><br />
                            <asp:Button ID="btnNext" runat="server" CssClass="btn btn-primary" OnClick="btnNext_Click" Text="Next" /> 
                        </asp:View>
                    </asp:MultiView>
                </div>
            </div>
        </div>

时间表考试.aspx.cs :

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            mvExam.ActiveViewIndex = 0;
            using (dbDataContext dt = new dbDataContext())
            {
                var qry = from i in dt.Technologies
                          select i;
                ddlTechnology.DataSource = qry;
                ddlTechnology.DataTextField = "TechnologyName";
                ddlTechnology.DataValueField = "TechnologyId";
                ddlTechnology.DataBind();
                ddlTechnology.Items.Insert(0, new ListItem("Select Technology", ""));
            }
        }
    }


protected void btnSchedule_Click(object sender, EventArgs e)
    {
        using (dbDataContext dt = new dbDataContext())
        {
            var qry = from i in dt.Questions
                      where i.TechnologyId == ddlTechnology.SelectedIndex
                      select i;
            Session["Question"] = qry.FirstOrDefault();
            Session["Qt_Cnt"] = 1;
            mvExam.ActiveViewIndex = 1;
            foreach (var item in qry)
            {
                lblQtnNum.Text = Session["Qt_Cnt"].ToString();
                lblQuestion.Text = item.Question1;
                rdbOpt1.Text = item.Option1;
                rdbOpt2.Text = item.Option2;
                rdbOpt3.Text = item.Option3;
                break;
            }
        }
    }

我在互联网上搜索过,但找不到任何富有成效的结果。如果缺少任何信息,请发表评论。

如何使用 LINQ 和 asp.net 中的多视图控件每次从数据库获取单行

您可以在

查询中使用Skip()Take()

        var qry = (from i in dt.Questions
                  where i.TechnologyId == ddlTechnology.SelectedIndex
                  select i).Skip(currentPage).Take(1);

然后,将 currentPage 变量添加到类中,并在"下一页"按钮处理程序中递增它。当然,"下一页"按钮处理程序必须重新执行btnSchedule_Click方法中的代码。

请注意,在我的示例中,currentPage必须从零开始(第一页是 0,而不是 1)