Как получить параметры переключателей для сохранения в базе данных
<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