如何从放置在数据库中继器中的单选按钮列表中存储所选数据

本文关键字:单选按钮 列表 数据 存储 中继器 数据库 | 更新日期: 2023-09-27 17:54:45

我正在创建一个调查表单,其中我希望使用单选按钮列表将调查接受者选择的回答存储在数据库中。由于我使用了一个重复器来做到这一点,我无法获得该数据

重复器代码:

<asp:Repeater ID="Repeater1" runat="server">
                    <ItemTemplate>
                        <table style="border:1px solid #A55129; background-color:aqua">
                            <tr>
                           <td style="width:200px">
                                    <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal" >
                                        <asp:ListItem Text="1" Value="Bad"></asp:ListItem>
                                        <asp:ListItem Text="2" Value="Fair"></asp:ListItem>
                                        <asp:ListItem Text="3" Value="Very Good"></asp:ListItem>
                                        <asp:ListItem Text="4" Value="Good"></asp:ListItem>
                                        <asp:ListItem Text="5" Value="Excellent"></asp:ListItem>
                                    </asp:RadioButtonList>
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:Repeater>

文件后面的代码:

protected void Button1_Click(object sender, EventArgs e)
{
    int answer;
    try
    {
        foreach (RepeaterItem item in Repeater1.Items)
        {
            if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
            {

                 RadioButtonList rb = (RadioButtonList)item.FindControl("RadioButtonList1");
                answer = Convert.ToInt32((rb.SelectedItem != null) ? rb.SelectedItem.Value.ToString() : "");
              SaveResponse(answer);
            }
        }
    }
    catch (Exception)
    { 
    }
}
private void SaveResponse(int answer)
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SurveyUserdataConnectionString2"].ConnectionString);
    conn.Open();
    string registerquery = "Insert into surveyresponses  (ANSWER) values (@ans)";
    SqlCommand comm = new SqlCommand(registerquery, conn);
    comm.Parameters.AddWithValue("@ans", answer);
    conn.Close();
}

如何从放置在数据库中继器中的单选按钮列表中存储所选数据

您需要执行com . executequery (),以便实际插入发生。这就是为什么您没有看到插入的数据。

实际上,这里有一种更干净的方法来做同样的事情,以便所有对象都被尽快处置。

string registerquery = "Insert into surveyresponses  (ANSWER) values (@ans)";
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SurveyUserdataConnectionString2"].ConnectionString))
{
 using (SqlCommand comm = new SqlCommand(registerquery, conn))
 {
  comm.Parameters.AddWithValue("@ans", answer);
  comm.ExecuteNonQuery();
 }
}