webForumDet fria alternativet

CheckBoxList problem

1 svar · 310 visningar · startad av saw

sawMedlem sedan mars 20011 880 inlägg
#1

Jag har nu fastnat ganska rejält på en sak som jag trodde var enkelt...
Jag har en listbox, med namn på ett antal arbetsledate, och listboxens
value = perLedId;
Jag har sedan en CheckBoxList med namn (anställda) value = iId
Ett fält i t_person heter arbetsled och är tal.
Min tanke: Genom att först markera en arbetsledare och sedan kryssa för
i CheckBoxListen så associera jag ett antal vanliga anställda till en arbetsledare, detta fungerar bra även om jag vill ta bort en arbetare så
fungerar det.
Problemet, jag kan inte få till det så att CheckBoxListen blir selectad...


private void fyllCheckBoxen()
    {
        int perLedId = 0;
        int iId = 0;
        if (ListBox1.SelectedValue != null)
            perLedId = Convert.ToInt32(ListBox1.SelectedValue);

        sql = "
SELECT 
t_person.personId, 
t_person.namn, 
t_person.arbetsLed 
FROM 
t_perLedare 
RIGHT JOIN 
t_person 
ON 
t_perLedare.perLedarId = t_person.arbetsLed
 ORDER BY
 t_person.namn";
        AccessDataPerson.SelectCommand = sql;
        AccessDataPerson.DataBind();
        int checkCount = CheckBoxList1.Items.Count;
       //denna första sql:en fyller CheckBoxListen
        for(int i=0;i< checkCount;i++)
        {
            DBConn.Close();
            iId = Int32.Parse(CheckBoxList1.Items[i].Value);
            sql="
SELECT 
t_person.personId, 
t_person.namn, t_person.arbetsLed "+
            " 
FROM t_perLedare 
RIGHT JOIN 
t_person 
ON t_perLedare.perLedarId = t_person.arbetsLed "+
            " 
WHERE 
t_person.personId=? 
AND t_person.arbetsLed=?";
            OleDbCommand cmd = new OleDbCommand(sql, DBConn);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add("personId", OleDbType.Integer).Value = iId;
            cmd.Parameters.Add("arbetsLed", OleDbType.Integer).Value = perLedId;
            OleDbDataReader objDR;
            DBConn.Open();
            objDR = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            if (objDR.HasRows)
                CheckBoxList1.Items[i].Selected = true;
            else
                CheckBoxList1.Items[i].Selected = false;
            sText = iId.ToString() + " " + perLedId.ToString();
        }
        Lifo.Text = sText;
        DBConn.Close();
    }

Jag dabbar mig någonstans men jag kan inte se det... x(

sawMedlem sedan mars 20011 880 inlägg
#2

...och ibland så räcker det att tänka till lite...

using (OleDbCommand cmd = new OleDbCommand())
                {
cmd.CommandText = "
SELECT 
t_person.personId AS ID,
 t_person.namn AS Namn, 
t_person.arbetsLed AS ArbLed "+
                      "  
FROM 
t_perLedare RIGHT 
JOIN t_person 
ON t_perLedare.perLedarId = t_person.arbetsLed  
ORDER BY t_person.namn";
                    cmd.Connection = DBConn;
                    DBConn.Open();
                    using (OleDbDataReader objDR = cmd.ExecuteReader())
                    {
                        while (objDR.Read())
                        {
                           
                            ListItem item = new ListItem();
                            item.Text = objDR["Namn"].ToString();
                            item.Value = objDR["ID"].ToString();
                            if (perLedId == objDR["ArbLed"].ToString())
                                checkad = true;
                            else
                                checkad = false;
                            item.Selected = checkad;
                            CheckBoxList1.Items.Add(item);
                        }
                    }
                }

..och nu blev det kanon.. :e

128 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)