【问题标题】:ASP.Net CheckBoxList Values Insert To DatabaseASP.Net CheckBoxList 值插入到数据库
【发布时间】:2014-07-11 19:58:16
【问题描述】:

我在 ASP.Net 中创建了一个 checkboxList,每个复选框都与一个值相关联。我的问题是,我有一个 SQL Server 数据库和一个名为 Plans 的表,该表包含一个名为 DeductiblePlans 的列,当有人检查 0 计划时,它的值 (1) 应该插入数据库中,如果选择了两个计划将插入两条记录,依此类推。

我的背景是 Windows 应用程序,我真的不知道如何获取从 ASPX 文件中选择的值并将其插入数据库。最有效的方法是什么?如果我能看到一个例子,我将不胜感激。

默认.ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script src="scripts/jquery-1.4.3.min.js" type="text/javascript"></script>

    <script type="text/javascript">

        function btnShow_onclick() {
            $("#spnLabels").text("");
            $("#spnValues").text("");

            var labels = "";
            var values = "";

            $("#<%= CheckBoxList1.ClientID %> input:checkbox:checked").each(function () {
                var label = $('label[for=' + this.id + ']').html();
                var value = $(this).parent().attr('hiddenValue');

                labels += label + "";
                values += value + ", ";

            });

            labels = labels.substring(0, labels.length);
            values = values.substring(0, values.length - 2);

            $("#spnLabels").text(labels);
            $("#spnValues").text(values);
        }

    </script>

</head>
<body>
    <form id="form1" runat="server">
        <asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" Width="870px" Height="139px">
            <asp:ListItem Text="$0 Plan" Value="1" />
            <asp:ListItem Text="$100 Plan" Value="2" />
            <asp:ListItem Text="$150 Plan" Value="3" />
            <asp:ListItem Text="$250 Plan" Value="4" />
            <asp:ListItem Text="$500 Plan" Value="5" />
            <asp:ListItem Text="$750 Plan" Value="6" />
            <asp:ListItem Text="$1000 Plan" Value="7" />
            <asp:ListItem Text="$1500 Plan" Value="8" />
            <asp:ListItem Text="$2000 Plan" Value="9" />
            <asp:ListItem Text="$2500 Plan" Value="10" />
            <asp:ListItem Text="$3000 Plan" Value="11" />
            <asp:ListItem Text="$4000 Plan" Value="12" />
        </asp:CheckBoxList>
        <br />

        <asp:LinkButton ID="lbAll" runat="server" OnClick="lbAll_Click">Select All</asp:LinkButton>
        <br />
        <br />

        <input id="btnShow" type="button" value="Show Selected Items" onclick="return btnShow_onclick()" />
        <br />
        <br />
        <br />
        <span id="spnLabels"></span>
        <br />
        <br />
        <span id="spnValues"></span>
        <br />
    </form>
</body>
</html>

Default.ASPX.CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        foreach (ListItem item in CheckBoxList1.Items)
        {
            item.Attributes.Add("hiddenValue", item.Value);
        }         
    }
    protected void lbAll_Click(object sender, EventArgs e)
    {
        foreach (ListItem li in CheckBoxList1.Items)
        {
            li.Selected = true;
        }
    }
}

【问题讨论】:

  • 为什么要添加隐藏值?

标签: c# asp.net sql-server checkboxlist


【解决方案1】:
protected void SubmitBtn_Click(object sender, EventArgs e)
{
    foreach(ListItem li in CheckBoxList1.items)
    {
        if(li.Selected)
        {
            //insert to database, the value is in item.Value
        }
    }
}

只需循环浏览并查看已选择的内容。它与 Win Forms 没有太大区别。

【讨论】:

  • 请给我您的反馈:
  • 这是我所做的: if (li.Selected) { SqlConnection conn = new SqlConnection("Data Source=localHost;Initial Catalog=aspData;Integrated Security=True"); conn.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO deductible (planID) VALUES ('yes')", conn); cmd.ExecuteNonQuery(); conn.Close(); }
  • 它正在工作,但是如果我将 yes 替换为 SqlCommand cmd = new SqlCommand("INSERT INTO deductible (planID) VALUES ('" + Items.Values + "')", conn); //它返回一个错误。
  • @user3345212 那么,错误是什么?请注意,我没有时间提示您提供这些详细信息。如果您遇到错误并希望我帮助您解决问题,请务必告诉我(或帮助您的人)错误是什么。
  • OK 那么,谢谢你的帮助,无论如何我都会评价你的答案,因为它有帮助。这就是我得到的错误:System.Data.dll 中发生“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理其他信息:字符串或二进制数据将被截断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多