Eng Abdull A-ziz Ответов: 1

Как заполнить список чекбоксов категорией и подкатегорией из БД


hello,

how to fill checkbox list with category and sub-category from DB

this is my sql table 
<pre lang="SQL">SELECT
dbo.category_data.category_id,
dbo.category_data.category_name,
dbo.category_data.category_parent,
dbo.category_data.category_description,
dbo.category_data.category_image,
dbo.category_data.category_status

FROM [dbo].[category_data]


и это мой код c#, мне нужна помощь, чтобы завершить его

private void bind_cat_menu()
   {
       SqlConnection con= new SqlConnection();
       con.ConnectionString = ConfigurationManager.ConnectionStrings["QMALL"].ToString();
       con.Open();
       DataSet ds = new DataSet();
       DataTable dt = new DataTable();
       string sql = "Select * from (category_data]";
       SqlDataAdapter da = new SqlDataAdapter(sql, con);
       da.Fill(ds);
       dt = ds.Tables[0];
       DataRow[] drowparent = dt.Select("category_parent=" + 0);
       foreach (DataRow dr in drowparent)
       {

       }
       foreach (DataRow dr in dt.Select("category_parent>" + 0))
       {

       }


Что я уже пробовал:

private void bind_cat_menu()
    {
        SqlConnection con= new SqlConnection();
        con.ConnectionString = ConfigurationManager.ConnectionStrings["QMALL"].ToString();
        con.Open();
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        string sql = "Select * from (category_data]";
        SqlDataAdapter da = new SqlDataAdapter(sql, con);
        da.Fill(ds);
        dt = ds.Tables[0];
        DataRow[] drowparent = dt.Select("category_parent=" + 0);
        foreach (DataRow dr in drowparent)
        {
            
        }
        foreach (DataRow dr in dt.Select("category_parent>" + 0))
        {
            
        }

1 Ответов

Рейтинг:
0

CHill60

Вот пример, который получает имена категорий и статус и заполняет флажок-вам нужно будет адаптировать его к вашим собственным потребностям.
Я предполагал, что category_status приравнивается к true или false - например, это может быть bit столбец, где 0 = false и 1 = true.

Я не возился с категорией и подкатегорией, потому что вы на самом деле не описали отношения и потому что примеры перечислены все со стола, независимо от того, есть у них "родитель" или нет.

И последнее, что следует отметить - это плохая практика использования

Select * from (category_data]
Лучше использовать явные имена столбцов, которые вам нужны:
SELECT category_name, category_status FROM category_data
Вот рабочий пример, который заполняет ComboBoxList и автоматически устанавливает выбранное значение на основе category_status.
private void BindCheckBoxList()
{

    var constr = ConfigurationManager.ConnectionStrings["ConnectToDB"].ConnectionString;
    using (var con = new SqlConnection(constr))
    {
        using (var cmd = new SqlCommand("SELECT category_name, category_status FROM category_data"))
        {
            using (var sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;

                using (var ds = new DataSet())
                {
                    sda.Fill(ds);
                    if (ds.Tables[0].Rows.Count <= 0) return;   //nothing to do if no data on the table
                    CheckBoxList1.DataSource = ds;
                    CheckBoxList1.DataTextField = "category_name";
                    CheckBoxList1.DataValueField = "category_name";
                    CheckBoxList1.DataBind();

                    var i = 0;
                    foreach (DataRow r in ds.Tables[0].Rows)
                    {
                        Debug.Print("{0} {1}", r.ItemArray[0],r.ItemArray[1]);
                        if (r.ItemArray[1].ToString().ToLower() == "true")
                            CheckBoxList1.Items[i].Selected = true;
                        i++;
                    }
                }
            }
        }
    }


Eng Abdull A-ziz

он работает, но то, что мне нужно, - это показать суб-кошку как узел от родителя

CHill60

Тогда вы можете использовать неправильный контроль. Элементы управления деревом исследований

Eng Abdull A-ziz

допускает ли дерево множественный выбор

CHill60

Это зависит от используемого вами элемента управления деревом.