如何获取复选框的实际名称而不是 datarowview

如何循环通过加载的所有复选框


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() + "%'");

    }

}


一只萌萌小番薯
浏览 66回答 1
1回答

德玛西亚99

您可以将引用存储dt.DefaultView在DataView字段中,也可以转换项目:foreach (DataRowView item in list1.Items.OfType<DataRowView>()){&nbsp; &nbsp; //...}您仍然需要将 的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>()){&nbsp; &nbsp; bool isChecked = Convert.ToBoolean(item["Checked"]);&nbsp; &nbsp; //...}
打开App,查看更多内容
随时随地看视频慕课网APP