Динамически добавьте контрольный список в заполнитель и получите проверенное значение контрольного списка - PullRequest
0 голосов
/ 02 ноября 2009

Я создаю страницу администратора, на которой список чекбоксов (Список пользователей из БД) должен создаваться динамически, а его значение проверенных пользователей получается.

Существуют разные типы пользователей, поэтому они различаются по группам.

Теперь сначала определяется панель, список флажков создается динамически и помещается внутри панели, затем панель помещается внутри заполнителя.

То, что я делаю здесь, это размещение списка флажков внутри панели, а затем панели внутри заполнителя. Таким образом, значения Checkboxlist не извлекаются, поскольку панель не получает контрольный список и не перебирает контрольный список.

То, что я сделал, это.

    private void AddControl(string pUserGrp, int pUserGrp_Id, int pName)
    {           
        CheckBoxList chkList = new CheckBoxList();
        CheckBox chk = new CheckBox();
        User us = new User();
        us.OrderBy = "Order By User_Name";
        us.WhereClause = "Where UserRole_Id = " + pUserGrp_Id ;
        chkList.ID = "ChkUser" + pName ;
        chkList.AutoPostBack = true;
        chkList.Attributes.Add("onClick", "getVal(ChkUser" + pName + ");");
        chkList.RepeatColumns = 6;
        chkList.DataSource = us.GetUserDS();
        chkList.DataTextField = "User_Name";
        chkList.DataValueField = "User_Id";                        
        chkList.DataBind();
        chkList.Attributes.Add("onClick", "getVal(this);");

        Panel pUser = new Panel();

        if (pUserGrp != "")   
        {
            pUser.GroupingText = pUserGrp ;
            chk.Text = pUserGrp;            
        }
        else 
        {
            pUser.GroupingText = "Non Assigned Group";
            chk.Text = "Non Assigned group";
        }
        pUser.Controls.Add(chk);
        pUser.Controls.Add(chkList);
        Place.Controls.Add(pUser);                          
   }

    private void setChecked(int pPageGroupId)
    {
        ArrayList arr = new ArrayList();
        PageMaster obj = new PageMaster();
        obj.WhereClause = " Where PageGroup_Id = " + pPageGroupId;
        arr = obj.GetPageGroupUserRights(null);

        CheckBoxList chkList = (CheckBoxList)Place.FindControl("ChkUser");

        if (chkList != null)
        {
            for (int i = 0; i < chkList.Items.Count; i++)
            {
                if (arr.Count > 0)
                {
                    int ii = 0;
                    while (ii < arr.Count)
                    {
                        PageMaster oCand = (PageMaster)arr[ii];

                        if (oCand.User_Name == chkList.Items[i].Text)
                        {
                            if (!chkList.Items[i].Selected)
                            {
                                chkList.Items[i].Selected = true;
                            }
                        }
                        ii++;
                        oCand = null;                            
                    }
                }
            }
        }
    }

    public string GetListCheckBoxText()
    {
        StringBuilder sbtext = new StringBuilder();            
        foreach (Control c in Place.Controls)
        {             
            if (c.GetType().Name == "CheckBoxList")
            {
                CheckBoxList cbx1 = (CheckBoxList)c;

                foreach (ListItem li in cbx1.Items)
                {
                    if (li.Selected == true)
                    {
                        sbtext.Append(",");
                        sbtext.Append(li.Value);
                    }
                    else
                    {
                        sbtext.Append(li.Value);
                    }
                }
            }
        }
        return sbtext.ToString();        }

Он не проходит через элемент управления Checkboxlist в setChecked (), а также не проходит через GetListCheckBoxTest ().

Любой может помочь мне плз.

Привет

1 Ответ

0 голосов
/ 05 ноября 2009

Проблема в том, что вы пытаетесь найти элемент управления (в setChecked) без установки свойства Name. Вы используете это:

CheckBoxList chkList = (CheckBoxList)Place.FindControl("ChkUser");

Но где это в AddControl?

chkList.Name = "ChkUser";

И в GetListCheckBoxText вместо ...

if (c.GetType().Name == "CheckBoxList")

... используйте это:

if (c.GetType()== typeof(CheckBoxList))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...