ذخیره checkbox های انتخاب شده در Asp.net

در این مقاله لیستی از checkbox ها را نمایش میدهیم و میخواهیم آیتم هایی را که کاربر انتخاب کرده ذخیره کنیم

ذخیره checkbox های انتخاب شده در Asp.net

در پایگاه داده یک جدول با فیلد های زیر میسازیم:

سپس تعدادی رکورد در جدول درج میکنیم و برای همه رکورد ها مقدار فیلد IsSelected را false در نظر میگیریم:

حال به صفحه خود یک CheckBoxList برای نمایش آیتم ها و یک دکمه برای ذخیره مواردی  که کاربر انتخاب کرده است :

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

برای فراخوانی و نمایش chechbox ها از پایگاه داده یک تابع به شکل زیر مینویسیم:


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();
        }
    }
}

سپس تابع بالا را در رویداد pageload  صفحه فراخوانی میکنیم:


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();
        }
    }
}

حالا میتونید برنامه رو اجرا کنید

فایل های ضمیمه