根据文本框更改更新selectedindices

时间:2015-12-04 15:13:04

标签: c# listview search textbox

我有一个包含listview的表单,该表单从数据库中提取票证信息。数据库对象都被抽象为类库。列表视图下方有一个标签页,显示门票的各种详细信息。

我的问题是我在此表单的顶部实现了一个搜索,该搜索没有更新该标签页,只有列表视图得到更新。输入关键字后,listview会正确刷新,并且除非搜索框中的文本被清除,否则将删除任何不包含关键字的项目。但我无法让tabpage显示相同的行为。标签页仍然包含所有票证。

例如,如果我要搜索列表视图中只返回1张票的东西,并说该票是记录中的第10张票;标签页会显示第一张票的详细信息。在进行搜索后,如何让tabpage显示与listview相同的行为?

标签页目前已填充此功能:

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();

        }

1 个答案:

答案 0 :(得分:0)

在我看来,如果用户选择ListView中的不同内容,则只会更新标签页。 如果您的listView1_SelectedIndexChanged方法仅是ListView.SelectedIndexChanged事件的处理程序,则仅在listView1中的选择更改时调用,而不是在其内容发生更改时调用(不改变选择。)

因此,在搜索后更改FillTicket的内容时,应致电listView1.Items

此外,如果ListView中有所选项目,则FillTicket方法仅更新标签页:

if (listView1.SelectedIndices.Count > 0)

我不知道是否有else - 分支。如果没有,如果没有选择任何项目,则标签页上不会有任何变化。您可能想要使用listView1.Items.Count