Member 11644373 Ответов: 1

Как получить параметры переключателей для сохранения в базе данных


<asp:Repeater ID="Repeater0" runat="server">
          <ItemTemplate>
              <table>
                  <tr>
                      <td>
                           <div id="lblEmployeeId" ><%# Eval("QId")%>    <%# Eval("QText")%></div>
                          <asp:HiddenField ID="QID" runat="server" Value='<%# Eval("QId")%>'/>

                          <br />

                      </td>

                  </tr>
                  <tr class="table-row">
                      <td>

                          <asp:Repeater ID="Repeater1" runat="server">
                                   <ItemTemplate>
                               <div runat="server"> <input type="radio" name='<%#Eval("QID")%>'  value='<%#Eval("AOptions")%>' id="AnswerOptions"><%#Eval("AOptions")%></input></div>   <br />
                                    <%--   <asp:RadioButton ID="RadioButton1" runat="server" name='<%#Eval("QID")%>' id='<%#Eval("ID")%>' value='<%#Eval("AOptions")%>' /><%#Eval("AOptions")%><br />--%>
                                   </ItemTemplate>
                              </asp:Repeater>
                          <br />
                      </td>
                  </tr>
              </table>









public partial class Quiz : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!this.IsPostBack)
        {
            BindEmployeeData();
            Repeater();
            
        }
    }
    private void BindEmployeeData()
    {
        string connection = ConfigurationManager.AppSettings["Connection"].ToString();
        using (SqlConnection con = new SqlConnection(connection))
        {
            using (SqlCommand objCommand = new SqlCommand("SELECT * FROM t_Question", con))
            {
                using (SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter(objCommand))
                {
                    DataTable dt = new DataTable();
                    dt.Columns.Add("QId");
                    dt.Columns.Add("QText");

                    objSqlDataAdapter.Fill(dt);
                    Repeater0.DataSource = dt;
                    Repeater0.DataBind();
                }
            }
        }


    }
    private void Repeater()
    {
        for (int i = 0; i <= Repeater0.Items.Count - 1; i++)
        {
            

            string connection = "server=sv01;database=testdb;uid=sa;password=mpx123";
            Repeater Repeater1 = (Repeater)Repeater0.Items[i].FindControl("Repeater1");
            HiddenField QID = (HiddenField)Repeater0.Items[i].FindControl("QID");
            SqlConnection ak = new SqlConnection(connection);
            ak.Open();
            string query = "Select * from [dbo].[t_Answers] where QId=" + QID.Value;
            SqlDataAdapter adp= new SqlDataAdapter(query, ak);
            DataTable ck = new DataTable();
            //ck.Columns.Add("AOptions");            
            adp.Fill(ck);
            Repeater1.DataSource = ck;
            Repeater1.DataBind();
            ak.Close();
        }
    }

    protected void BtnSubmit_Click(object sender, EventArgs e)
    {
        var collection = Repeater0.Items.Count;
        
        foreach (var item in collection)
        {
            
        }
    }



  
}


Я использовал два ретранслятора в этом, один для вопроса, идентификатор вопроса и другой для переключателя, чтобы получить данные из базы данных, но теперь я не знаю, как сохранить данные, что каждый переключатель состоит всякий раз, когда пользователь собирается проверить эту опцию .

Что я уже пробовал:

Я пытаюсь для каждого цикла, но не знаю, как использовать его с вложенным ретранслятором


охраняемых недействительными BtnSubmit_Click(объект отправителя, EventArgs в электронной)
{
var collection = Repeater0.Предметы.Рассчитывать;

foreach (var item in collection)
{

}
}

Kornfeld Eliyahu Peter

Разве он не привязан к данным (ретранслятор)?

Member 11644373

Да

Kornfeld Eliyahu Peter

Ну и что? Просто сохраните источник данных в БД, изменения должны быть доставлены из-за ограниченного характера отображения...

Member 11644373

Я не могу понять, что ты пытаешься сказать.позвольте мне прояснить мой вопрос на самом деле я хочу, чтобы всякий раз, когда пользователь нажимает на любой переключатель из четырех вариантов, я хочу, чтобы этот параметр был сохранен в базе данных всякий раз, когда пользователь нажимает на кнопку отправки

Kornfeld Eliyahu Peter

Вот что я хочу сказать:
1. Ваш элемент управления ограничен данными, поэтому любые изменения в нем должны быть отражены в источнике данных
2. Таким образом, когда вы отправляете страницу, все, что вам остается, - это сохранить источник данных. Вам не нужно беспокоиться об обновлении источника данных из элементов управления, как это делается из-за привязки данных...
Все это, конечно, в том случае, если вы правильно сделали свою привязку...
Смотрите некоторые статьи здесь:
https://msdn.microsoft.com/en-us/library/cc425007(v=против 80). aspx
http://www.webcodeexpert.com/2013/04/how-to-bind-edit-update-and-delete-data.html

1 Ответов

Рейтинг:
11

F-ES Sitecore

Самый простой способ-прочитать ответы из запроса. "Имя" ваших переключателей - это идентификатор вопроса, поэтому, если вы запрашиваете.Форма[QId] вы получите выбранный ответ

protected void BtnSubmit_Click(object sender, EventArgs e)
{
    var collection = Repeater0.Items;

    foreach (RepeaterItem item in collection)
    {
        HiddenField QID = (HiddenField)item.FindControl("QID");

        int q = int.Parse(QID.Value);

        string answer = Request.Form[q.ToString()];

    }
}


Альтернативой может быть использование переключателей на стороне сервера или списка радиобуттонов и программный доступ к этим элементам управления.


Member 11644373

Спасибо за помощь