Как я могу получить настоящее имя флажка вместо datarowview - PullRequest
0 голосов
/ 12 марта 2019

Как пройти через все флажки, загруженные

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;
}

xaml:

<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 Ответ

2 голосов
/ 12 марта 2019

Вы можете либо сохранить ссылку на 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"]);
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...