2016-03-04 8 views
0

Я создаю проект под названием Online Exam Portal. В котором Студент может выбрать Technology и сдавать экзамен. Студент может выбрать технологию из раскрывающегося списка.Как получить одну строку каждый раз из базы данных с помощью linq и управления мультивизом в asp.net

Вопросы для конкретной технологии поступают из базы данных. Теперь мне нужен единый вопрос за раз в представлении (для управления MultiView), то есть, когда студент нажимает кнопку «Далее», тогда только один вопрос должен отображаться в одном представлении. Я могу получить один вопрос, но не вперед.

Я попытался следующий код:

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> 

ScheduleExam.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; 
      } 

     } 
    } 

Я искал в Интернете, но не смог найти какой-либо плодотворными Результаты. Прокомментируйте, не хватает ли какой-либо информации.

ответ

1

Вы можете использовать Skip() и Take() по Вашему запросу:

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

Затем добавьте переменную currentPage в класс и увеличить его в Следующая страница обработчиком кнопку. И, конечно, обработчик кнопки Next page должен повторить код, который у вас есть в методе btnSchedule_Click.

Обратите внимание, что в моем примере currentPage должен быть нулем (первая страница 0, а не 1)

+0

так что нет никаких изменений в правом петле Еогеаспа? я имею в виду использование перерыва; заявление. ? –

+0

Это работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^