根据文本框的更改更新选定的骰子

本文关键字:更新 文本 | 更新日期: 2023-09-27 18:25:36

我有一个表单,它包含一个从数据库中提取票证信息的列表视图。数据库对象都被抽象到一个类库中。列表视图下方有一个选项卡页面,其中显示了票证的各种详细信息。

我的问题是,我在这个表单的顶部实现了一个搜索,它不更新那个选项卡页面,只更新列表视图。键入关键字后,列表视图将正确刷新,所有不包含关键字的项目都将被删除,直到搜索框中的文本被清除。但我无法让选项卡页面表现出同样的行为。选项卡页仍然总是包含所有的票证。

例如,如果我在列表视图中搜索只返回了一张票的东西,并说这张票是有记录以来的第10张票;标签页会显示第一张票的详细信息。在进行搜索后,如何使选项卡页面显示与列表视图相同的行为?

选项卡页面当前填充了以下功能:

private void FillTicket()
    {
        try
        {
            if (listView1.SelectedIndices.Count > 0)
            {
                CTicket thistkt = comp.Tickets[listView1.SelectedIndices[0]];
                dedit1.DocumentHTML = thistkt.LineItems.GetCombinedProblem();
                dedit2.DocumentHTML = thistkt.LineItems.GetCombinedResolution();
                lvAssignmentHistory.Items.Clear();
                            foreach (CInc_AssignmentHistory a in thistkt.AssignmentHistory)
                            {
                                 ListViewItem itm = new ListViewItem();
                                itm.Text = a.pAsgn_Datetime.ToString();
                                itm.SubItems.Add(a.pAsgn_Group_fr);
                                itm.SubItems.Add(a.pAsgn_from);
                                itm.SubItems.Add(a.pAsgn_Group_to);
                                itm.SubItems.Add(a.pAsgn_to);
                                itm.SubItems.Add(a.pChanged_By);
                                lvAssignmentHistory.Items.Add(itm);
                }

当这被称为:

private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        //FillTicket();
        if (txtBox_TicketSearch.Text != "") 
        {
            FillTicketNothing();
        }
        else
        {
            FillTicket();
        }

根据文本框的更改更新选定的骰子

在我看来,只有当用户ListView中选择不同项目时,才更新选项卡页面。如果listView1_SelectedIndexChanged方法只是ListView.SelectedIndexChanged事件的处理程序,则仅当listView1中的选择发生更改时调用它,而不是当它的内容发生更改时(不更改选择)调用它。

因此,当您在搜索后更改listView1.Items的内容时,应该调用FillTicket

此外,如果ListView:中有选定的项目,则FillTicket方法仅更新选项卡页面

if (listView1.SelectedIndices.Count > 0)

我不知道如果有else分支。如果没有,如果没有选择任何项目,你的选项卡页面上就不会有任何变化。您可能需要使用listView1.Items.Count