动态复选框列表

时间:2011-01-06 10:51:43

标签: c# .net dynamic checkboxlist

我目前正在构建一个动态网址标签系统,用户可以说明他们希望在标签页控件上显示哪些网址。

在数据库中,我有以下列。

userID,int URLName var 启用位

我正在将数据拉回来,但我正在尝试做的是在用户选项页面上填充一个带有urlname及其状态的复选框列表,以便他们可以说出他们想要显示的标签。

我已经编写了以下方法来获取网址并创建复选框但是我不断收到以下错误。

ex = {“InvalidArgument ='1'的值对'index'无效。\ r \ nParameter name:index”}

它读取第一行ok但是当它返回正在返回的第二行时我得到了该错误。

有没有人有任何想法?

由于

private void GetUserURLS()
    {

        db.initiateCommand("[Settings].[LoadAllUserURLS]", CommandType.StoredProcedure);

        sqlp = db.addParameter("@UserID", _UserID, SqlDbType.Int, ParameterDirection.Input);
        sqlp = db.addParameter("@spErrorID", DBNull.Value, SqlDbType.Int, ParameterDirection.InputOutput);

        db.executeCommand();

        CreateCheckBoxes(db.getTable(0).Rows);
        db.releaseCommand();
    }


    private void CreateCheckBoxes(DataRowCollection rows)
    {
        try
        {
            int i = 0;
            foreach (DataRow row in rows)
            {
                //Gets the url name and path when the status is enabled. The status of Enabled / Disabled is setup in the users option page
                string URLName = row["URLName"].ToString();
                bool enabled = Convert.ToBoolean(row["Enabled"]);

                CheckedListBox CB = new CheckedListBox();              
                CB.Items.Insert(i, URLName);

                CB.Tag = "CB" + i.ToString();

                checkedListBox1.Items.Add(CB);

                i++;
            }
        }

        catch (Exception ex)
        {
            //Log error
            Functionality func = new Functionality();
            func.LogError(ex);

            //Error message the user will see
            string FriendlyError = "There has been populating checkboxes with the urls - A notification has been sent to development";
            Classes.ShowMessageBox.MsgBox(FriendlyError, "There has been an Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

1 个答案:

答案 0 :(得分:3)

您不应该将CheckedListBox作为项添加到CheckedListBox。请尝试添加URLName字符串,即

            string URLName = row["URLName"].ToString();
            bool enabled = Convert.ToBoolean(row["Enabled"]);

            checkedListBox1.Items.Add(URLName, enabled);

这就是你想要实现的目标。