为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
一只萌萌小番薯 2022-10-23 10:06:38
如何循环通过加载的所有复选框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"]);

    //...

}


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信