如何循環通過加載的所有復選框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 關注
- 118 瀏覽
添加回答
舉報
0/150
提交
取消