如何使用数据库中的数据将值绑定到复选框?

时间:2017-01-10 04:01:30

标签: c# asp.net checkbox

我有一个带有几个复选框的界面。 我希望检查数据库中是否有相关值 这是我的界面 Interface

首先要从另一个表中加载复选框,并使用另一个表加载框内的其他复选框 如果可以,请帮助我这样做。

这是前4个复选框的表格 1st checkboxes

这是下方复选框的表格 lower checkboxes

我创建了查询并将数据传输到数据集。
这是我到目前为止所做的代码

id | user_from | message 
----+-----------+---------
  7 | user2     | doc
  5 | user3     | nice
  6 | user4     | cana

2 个答案:

答案 0 :(得分:3)

<强>数据库

  • 我已经将下表的爱好与架构一起使用了 如下。在ASP.Net中的GridView中启用禁用的CheckBoxField列

    enter image description here

  • 我已经在表中启用了禁用的几条记录 ASP.Net中GridView中的CheckBoxField列

enter image description here

  • HTML标记

以下是ASP.net网页的HTML标记。

正如您所看到的,我添加了一个CheckBoxList和一个Button,允许用户更新数据库中的选择。

<asp:CheckBoxList ID="chkHobbies" runat="server">
</asp:CheckBoxList>
<br />
<asp:Button ID="btnUpdate" runat="server" Text="Button" OnClick = "UpdateHobbies" />

下面的屏幕截图描述了用户界面的外观

enter image description here

从数据库填充CheckBoxList

以下方法用于从SQL Server数据库填充Hobbies CheckBoxList C#

private void PopulateHobbies()
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select * from hobbies";
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    ListItem item = new ListItem();
                    item.Text = sdr["Hobby"].ToString();
                    item.Value = sdr["HobbyId"].ToString();
                    item.Selected = Convert.ToBoolean(sdr["IsSelected"]);
                    chkHobbies.Items.Add(item);
                }
            }
           conn.Close();
        }
    }
}

以下方式在页面加载事件中调用上述方法: -

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        this.PopulateHobbies();
    }
}

保存数据库中的选择

以下方法在提交按钮点击事件上调用,用于将用户选择保存到数据库

protected void UpdateHobbies(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "update hobbies set IsSelected = @IsSelected" +
                              " where HobbyId=@HobbyId";
            cmd.Connection = conn;
            conn.Open();
            foreach (ListItem item in chkHobbies.Items)
            {
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@IsSelected", item.Selected);
                cmd.Parameters.AddWithValue("@HobbyId", item.Value);
                cmd.ExecuteNonQuery();
            }
            conn.Close();
        }
    }
}

程序第一次运行时 When program runs for the first time

更新复选框中的值

enter image description here

答案 1 :(得分:1)

我已经解决了问题,这是代码。

            List<int> list = new List<int>();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                list.Add(Convert.ToInt32(dr["Qulif_code"]));

            }
            int[] arr = list.ToArray();

            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] == 1)
                {
                    ck_ol.Checked = true;
                }
                else if (arr[i] == 2)
                {
                    ck_al.Checked = true;
                }
                else if (arr[i] == 3)
                {
                    ck_dip.Checked = true;
                }
                else if (arr[i] == 4)
                {
                    ck_deg.Checked = true;
                }

            }          

我希望这可能对将来有所帮助。