如何将选定的项目返回到 checkedListBox 中
How to get Selected Items back back into the checkedListBox
我已将名为 CLB_CONTROLLER 的 checkedListBox 加载到页面以显示名称而不是 ID:
此信息存储在 dbo.CHIPSET
public void loadCategory()
{
CLB_CONTROLLER.DataSource = catg.getCategories();
CLB_CONTROLLER.DisplayMember = "CHIPSET";
CLB_CONTROLLER.ValueMember = "CHIPSET_ID";
}
然后我将数据作为字符串插入到数据库中。此信息存储在 dbo.MYDB
//LOOP THROUGH CONTROLLER CHECKED ITEMS TO INSERT ALL SELECTED
string chip = "";
for (int i = 0; i < CLB_CONTROLLER.CheckedItems.Count; i++)
{
if (chip == "")
{
chip = CLB_CONTROLLER.GetItemText(CLB_CONTROLLER.CheckedItems[i]);
}
else
{
chip += ", " + CLB_CONTROLLER.GetItemText(CLB_CONTROLLER.CheckedItems[i]);
}
}
到目前为止一切顺利……现在我想创建更新功能……当用户从 DataGrid
中选择单元格时,我想自动填充所有 textboxes
、CheckBoxes
等这一页。所以我想弄清楚如何使用上面提到的 CLB_CONTROLLER
来做到这一点。
更新正在查看 dbo.MYDB
和第 2 列 CHIPSET
,它现在是一个字符串(插入上面的代码)。我在下面有这段代码,但是当我点击 DataGrid
时,CLB_CONTROLLER
内部没有任何反应
//CHECK IF CONTROLLER CONTAINES CONTENT, THEN SELLECT APPROPRIATE CHECK BOX
string con = DGV_AOC.CurrentRow.Cells[2].Value.ToString();
string[] convalues = con.Split(',');
for (int i = 0; i < convalues.Length; i++)
{
convalues[i] = convalues[i].Trim();
}
for (int i = 0; i < CLB_CONTROLLER.Items.Count; i++)
{
CLB_CONTROLLER.SetItemChecked(i, false);//First uncheck the old value!
for (int x = 0; x < convalues.Length; x++)
{
if (CLB_CONTROLLER.Items[i].ToString() == convalues[x].ToString())
{
//Check only if they match!
CLB_CONTROLLER.SetItemChecked(i, true);
}
}
}
如有任何帮助,我们将不胜感激。
假设您已将 CheckedListBox
填充为 a,b,c,d,e,f
作为项目文本。
然后您可以这样设置基于逗号分隔列表的选中项:
var itemsToSelect = "a,c,d";
var items = itemsToSelect.Split(',');
for (var i = 0; i < checkedListBox1.Items.Count; i++)
{
var b = items.Contains(checkedListBox1.GetItemText(checkedListBox1.Items[i]));
checkedListBox1.SetItemChecked(i, b);
}
您还可以通过以下方式获取以逗号分隔的字符串中的选中项目:
var selectedItems = string.Join(",",
checkedListBox1.CheckedItems.Cast<object>()
.Select(x => checkedListBox1.GetItemText(x)));
我已将名为 CLB_CONTROLLER 的 checkedListBox 加载到页面以显示名称而不是 ID:
此信息存储在 dbo.CHIPSET
public void loadCategory()
{
CLB_CONTROLLER.DataSource = catg.getCategories();
CLB_CONTROLLER.DisplayMember = "CHIPSET";
CLB_CONTROLLER.ValueMember = "CHIPSET_ID";
}
然后我将数据作为字符串插入到数据库中。此信息存储在 dbo.MYDB
//LOOP THROUGH CONTROLLER CHECKED ITEMS TO INSERT ALL SELECTED
string chip = "";
for (int i = 0; i < CLB_CONTROLLER.CheckedItems.Count; i++)
{
if (chip == "")
{
chip = CLB_CONTROLLER.GetItemText(CLB_CONTROLLER.CheckedItems[i]);
}
else
{
chip += ", " + CLB_CONTROLLER.GetItemText(CLB_CONTROLLER.CheckedItems[i]);
}
}
到目前为止一切顺利……现在我想创建更新功能……当用户从 DataGrid
中选择单元格时,我想自动填充所有 textboxes
、CheckBoxes
等这一页。所以我想弄清楚如何使用上面提到的 CLB_CONTROLLER
来做到这一点。
更新正在查看 dbo.MYDB
和第 2 列 CHIPSET
,它现在是一个字符串(插入上面的代码)。我在下面有这段代码,但是当我点击 DataGrid
时,CLB_CONTROLLER
//CHECK IF CONTROLLER CONTAINES CONTENT, THEN SELLECT APPROPRIATE CHECK BOX
string con = DGV_AOC.CurrentRow.Cells[2].Value.ToString();
string[] convalues = con.Split(',');
for (int i = 0; i < convalues.Length; i++)
{
convalues[i] = convalues[i].Trim();
}
for (int i = 0; i < CLB_CONTROLLER.Items.Count; i++)
{
CLB_CONTROLLER.SetItemChecked(i, false);//First uncheck the old value!
for (int x = 0; x < convalues.Length; x++)
{
if (CLB_CONTROLLER.Items[i].ToString() == convalues[x].ToString())
{
//Check only if they match!
CLB_CONTROLLER.SetItemChecked(i, true);
}
}
}
如有任何帮助,我们将不胜感激。
假设您已将 CheckedListBox
填充为 a,b,c,d,e,f
作为项目文本。
然后您可以这样设置基于逗号分隔列表的选中项:
var itemsToSelect = "a,c,d";
var items = itemsToSelect.Split(',');
for (var i = 0; i < checkedListBox1.Items.Count; i++)
{
var b = items.Contains(checkedListBox1.GetItemText(checkedListBox1.Items[i]));
checkedListBox1.SetItemChecked(i, b);
}
您还可以通过以下方式获取以逗号分隔的字符串中的选中项目:
var selectedItems = string.Join(",",
checkedListBox1.CheckedItems.Cast<object>()
.Select(x => checkedListBox1.GetItemText(x)));