チェックリストボックスで選択されたタグに基づいてドキュメントをフィルタリングしようとしています - クラスタグのオブジェクトが取り込まれています- しかし、検索するために項目にアクセスできません。いくつかのバリエーションを試しましたが、今使用している方法は次のとおりです。
private void chlbTags_ItemCheck(object sender, ItemCheckEventArgs e)
{
List<Tag> chosenTags = new List<Tag>();
foreach (object item in chlbTags.CheckedItems)
{
chosenTags.Add((Tag)item);
}
fillDocs(tags: chosenTags);
}
おそらく単純なことだとは思いますが、検索すると文字列を取り戻すことに関連しているように見えます。
編集:チェックされたタグの数に関係なく、 chooseTagsは常に null です。
EDIT 2: @Jony のおかげで、いまいましい... これは部分的にソートされています。しかし、InvalidCastException をスローせずに複数のタグをチェックすることはできません。
EDIT 3:チェックされたリストボックスがどのように入力されるか。
public static List<Tag> fillUsed(List<int> docIds = null)
{
List<Tag> used;
if (docIds == null)
{
used = (from t in frmFocus._context.Tags
where t.AllocateDocumentTags.Count > 0
select t).ToList();
}
else
{
used = (from id in docIds
join adt in frmFocus._context.AllocateDocumentTags on
id equals adt.documentId
join t in _tags on adt.tagId equals t.id
select t).ToList();
}
return used;
}
どんな助けでも大歓迎です、ありがとう。
この部分が効く
public void fillDocs(List<Tag> tags = null)
{
lvDownload.Items.Clear();
if (tags != null)
{
docs = docManagement.fillUp(tags: tags);
}
else
{
docs = docManagement.fillUp();
}
}