如何循环检查列表框中的所有数据?
How to loop all data in checkedlistbox?
如何以'PROPER'方式循环checkedlistbox中的所有数据并在控制台打印或在messagebox上一一弹出?
我用这种方式填充了我的 clbPackages
// clbPackages is a checkedlistbox
SqlCommand scPackages = new SqlCommand("SELECT XXX FROM XXX", sqlConnection);
SqlDataReader readerPackages;
readerPackages = scPackages.ExecuteReader();
DataTable dtPackages = new DataTable();
dtPackages.Columns.Add("PACKAGE_GROUP_ID", typeof(string));
dtPackages.Columns.Add("PACKAGE_GROUP_NAME", typeof(string));
dtPackages.Load(readerPackages);
this.clbPackages.DataSource = dtPackages;
this.clbPackages.ValueMember = "PACKAGE_GROUP_ID";
this.clbPackages.DisplayMember = "PACKAGE_GROUP_NAME";
现在我必须循环检查列表框,因为我正在尝试签入一些,我最好的尝试是下面的代码
foreach (var item in clbPackages.Items)
{
MessageBox.Show(item.ToString());
}
它只有 return xxx.xxx.DataRowView,如果我尝试再次循环该项目,它将显示错误 "foreach statement cannot operate on variables of type 'object' because 'object' "
比约恩回答
其他交易方式
foreach (object item in clbPackages.Items)
{
DataRowView castedItem = item as DataRowView;
string groupId= castedItem["PACKAGE_GROUP_ID"].ToString();
MessageBox.Show(groupId);
}
据我所知,您可以访问原始数据:
this.clbPackages.DataSource = dtPackages;
因此,您只需将 DataSource 转换为原始项目(将其转换为 DataTable),就可以使用所有原始数据,不是吗?
听起来 Items 集合中的对象属于 DataRowView 类型。因此,如果您将每个项目转换为 DataRowView 并从该对象获取值,您应该没问题:
foreach (DataRowView item in clbPackages.Items)
{
MessageBox.Show(item["PACKAGE_GROUP_NAME"].ToString());
}
要循环 checkedListBox 控件中的所有数据,请尝试使用此方法。
for(int i=0; i<clbPackages.Items.Count ; i++)
{
MessageBox.Show(clbPackages.Items[i].ToString());
}
如何以'PROPER'方式循环checkedlistbox中的所有数据并在控制台打印或在messagebox上一一弹出?
我用这种方式填充了我的 clbPackages
// clbPackages is a checkedlistbox
SqlCommand scPackages = new SqlCommand("SELECT XXX FROM XXX", sqlConnection);
SqlDataReader readerPackages;
readerPackages = scPackages.ExecuteReader();
DataTable dtPackages = new DataTable();
dtPackages.Columns.Add("PACKAGE_GROUP_ID", typeof(string));
dtPackages.Columns.Add("PACKAGE_GROUP_NAME", typeof(string));
dtPackages.Load(readerPackages);
this.clbPackages.DataSource = dtPackages;
this.clbPackages.ValueMember = "PACKAGE_GROUP_ID";
this.clbPackages.DisplayMember = "PACKAGE_GROUP_NAME";
现在我必须循环检查列表框,因为我正在尝试签入一些,我最好的尝试是下面的代码
foreach (var item in clbPackages.Items)
{
MessageBox.Show(item.ToString());
}
它只有 return xxx.xxx.DataRowView,如果我尝试再次循环该项目,它将显示错误 "foreach statement cannot operate on variables of type 'object' because 'object' "
比约恩回答
其他交易方式
foreach (object item in clbPackages.Items)
{
DataRowView castedItem = item as DataRowView;
string groupId= castedItem["PACKAGE_GROUP_ID"].ToString();
MessageBox.Show(groupId);
}
据我所知,您可以访问原始数据:
this.clbPackages.DataSource = dtPackages;
因此,您只需将 DataSource 转换为原始项目(将其转换为 DataTable),就可以使用所有原始数据,不是吗?
听起来 Items 集合中的对象属于 DataRowView 类型。因此,如果您将每个项目转换为 DataRowView 并从该对象获取值,您应该没问题:
foreach (DataRowView item in clbPackages.Items)
{
MessageBox.Show(item["PACKAGE_GROUP_NAME"].ToString());
}
要循环 checkedListBox 控件中的所有数据,请尝试使用此方法。
for(int i=0; i<clbPackages.Items.Count ; i++)
{
MessageBox.Show(clbPackages.Items[i].ToString());
}