CheckedListBox在C#.NET中重新填充问题

时间:2010-01-29 17:29:24

标签: c# windows

我已经填充了一个CheckedListBox,它将DataSource与Display Member和Vlaue Member绑定在一起。 我已经使用关系表在数据库中保存了checkedValues的值。 我需要重新填充checkedListbox,以便检查先前检查过哪个值(已保存)。我已完成第一步。但是在第二步中,我无法获得项目的索引来比较关系表来检查它们。

按照我的代码绑定CheckedListBox:

private void FillCheckedListBox (CheckedListBox chkListBox, string sSql, string displayMember, string valueMember)
        {
            try {
                SqlConnection con = new SqlConnection(DaoCodeGCommon.GetConstring());
                con.Open();
                DataTable accTable = new DataTable();
                SqlCommand cmd = new SqlCommand(sSql, con);
                SqlDataAdapter adpObj = new SqlDataAdapter(cmd);
                accTable.TableName = "tbl";
                adpObj.Fill(accTable);
                con.Close();
                chkListBox.DataSource = accTable;
                chkListBox.ValueMember = valueMember;
                chkListBox.DisplayMember = displayMember;
            }
            catch (Exception ex) {

                throw ex;
            }
        }

有没有办法重新填充checkedListBox?

1 个答案:

答案 0 :(得分:0)

如果您拥有数据库中的状态并且从数据库中提取数据,则可以轻松地重新加载复选框列表。

例如,假设您加载了一个带有某种读者的复选框列表:

chkUsers.DataSource = reader;
chkUsers.DataTextField = "YourTextFieldToView";
chkUsers.DataValueField = "YourValueFieldToHide";
chkUsers.DataBind();

所以现在你已经加载了检查清单框,现在你需要打开/关闭复选框。

for(int i =0; i< chkUsers.Items.Count-1; i++)
 {
  if(dbVal == chkUsers.Items(i).Value)
   {
    chkUsers.Items(i).Selected = dbVal;
   }
  }

在这种情况下,dbVal可能是读者或数据集或数据表等中的某些值。