如何循环通过加载的所有复选框public void loadTags(){ DataTable dt = new DataTable(); using (SqlCommand selectTags = new SqlCommand("select tag from Categories", cs)) { cs.Open(); using (SqlDataAdapter dataAd = new SqlDataAdapter(selectTags)) { dt = new DataTable(); dataAd.Fill(dt); } cs.Close(); } list1.ItemsSource = dt.DefaultView;}xml:<ListView Name="list1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="307,52,0,0" Height="132" Width="293"> <ListView.ItemTemplate> <DataTemplate> <CheckBox Content="{Binding tag}"/> </DataTemplate> </ListView.ItemTemplate></ListView>你知道我现在如何使用循环获取所有标签名称(复选框)吗?如果我将这些复选框直接硬编码到网格中,则此循环正在工作。但是,如果我直接从数据库中获取它们,如果选中这些复选框,我只会得到System.Data.DataRowView而不是spo、inf、war 等。foreach (var items in list1.Items){ if (items.IsChecked == true) { list.Add("CategoryMulti like '%" + item.Content.ToString() + "%'"); }}
1 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
您可以将引用存储dt.DefaultView在DataView字段中,也可以转换项目:
foreach (DataRowView item in list1.Items.OfType<DataRowView>())
{
//...
}
您仍然需要将 的IsChecked属性值存储CheckBox在DataTable. 如果没有这样的列,则应DataTable在视图中绑定之前将其添加到:
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Checked", typeof(bool)) { DefaultValue = false });
...
<CheckBox Content="{Binding tag}" IsChecked="{Binding Checked} "/>
然后,您可以像这样在循环中获取列的值:
foreach (DataRowView item in list1.Items.OfType<DataRowView>())
{
bool isChecked = Convert.ToBoolean(item["Checked"]);
//...
}
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消