【问题标题】:Filter a listview with 2 columns?过滤包含 2 列的列表视图?
【发布时间】:2014-03-23 21:39:11
【问题描述】:

这是 xaml 中的列表视图

 <ListView x:Name="jobsListView_manageajob" HorizontalAlignment="Left" Height="456" Margin="21,163,0,0" VerticalAlignment="Top" Width="242" FontSize="15" BorderThickness="0" SelectionChanged="jobsListView_manageajob_SelectionChanged">
        <ListView.Resources>
            <Style TargetType="GridViewColumnHeader">
                <Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
            </Style>
        </ListView.Resources>
        <ListView.View>
            <GridView AllowsColumnReorder="False">
                <GridViewColumn Header="Job #" DisplayMemberBinding="{Binding JobNumberListView1}" Width="50"/>
                <GridViewColumn Header="Job Name" DisplayMemberBinding="{Binding JobNameListView1}"/>
            </GridView>
        </ListView.View>
    </ListView>

我不太确定我是如何填充它的,我对 MVVM 很不熟悉,但这就是我使用的

 private void populateJobsListView()
    {
        SqlConnection conn = new SqlConnection(sCONN);
        conn.Open();

        SqlCommand cmd = new SqlCommand("select Job_Number, Name from Jobs", conn);

        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            string jobNumber = Convert.ToString(dr.GetValue(0));
            string jobName = Convert.ToString(dr.GetValue(1));
            jobsListView_manageajob.Items.Add(new { JobNameListView1 = jobName, JobNumberListView1 = jobNumber });
        }

        conn.Close();
    }

现在我只需要根据搜索框内的文本过滤列表框。因此,当我键入术语时,listview 元素会缩小范围。我以为我可以根据 sql 语句重新填充列表视图,但这似乎效率低下。我想使用我的文本框的 textchanged 属性来做到这一点。

【问题讨论】:

    标签: c# wpf listview search


    【解决方案1】:

    您的TextChanged 处理程序可以将委托分配给jobsListView_manageajob.Items.Filter。这将导致列表被自动过滤。

    查看Filter 的文档了解更多详情。

    【讨论】:

    • 这在代码中看起来如何?我想使用文本框中的文本进行过滤。 jobsListView_manageajob.Items.Filter = delegate(); ?
    • 这是一个非常笼统的问题。文档是了解这一点的最佳场所。 msdn.microsoft.com/EN-US/library/vstudio/ms752348.aspx
    【解决方案2】:

    你应该阅读一些关于绑定的东西,然后你的任务会变得非常容易:)

    here 是如何过滤集合的答案

    • 使用数据库中的数据填充集合
    • 创建一个 collectionview 进行过滤
    • 将您的 listview itemssource 绑定到您的视图
    • 当您的文字发生变化时刷新您的视图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2017-06-26
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      相关资源
      最近更新 更多