C# 在WPF C中从Postgres数据库填充ListView

C# 在WPF C中从Postgres数据库填充ListView,c#,wpf,xaml,listview,C#,Wpf,Xaml,Listview,你好 我正在使用WPF C Visual Studio 2012。我的xaml中有一个列表视图,如: <ListView Name="listview" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan

你好

我正在使用WPF C Visual Studio 2012。我的xaml中有一个列表视图,如:

          <ListView 
                Name="listview" 
                Grid.Column="0"                
                Grid.ColumnSpan="2" 
                Grid.Row="1"
                Grid.RowSpan="15"
                Margin="5"
                BorderThickness="0"
                Background="WhiteSmoke">
                <ListView.View>
                    <GridView>
                        <GridView.Columns>
                            <GridViewColumn 
                                Header="column1" 
                                DisplayMemberBinding="{Binding path}" />
                            <!--other path-->
                        </GridView.Columns>
                    </GridView>
                </ListView.View>
            </ListView>
当我运行我的程序时,我知道它会填充listview,因为当我将鼠标悬停在上面时,我可以看到它的行,但是我看不到这些行上的任何文本

我错过了什么

提前谢谢


快乐编码

关于实体的这些小信息很难帮助你。。。 但我敢打赌,数据库中的实体没有路径属性

这个例子对我很有用:

   <ListView 
            Name="listview" 
            Grid.Column="0"                
            Grid.ColumnSpan="2" 
            Grid.Row="1"
            Grid.RowSpan="15"
            Margin="5"
            BorderThickness="0"
            Background="WhiteSmoke">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn 
                            Header="column1" 
                            DisplayMemberBinding="{Binding Path}" />
                    <!--other path-->
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
代码隐藏:

   public partial class MainWindow : Window
   {
    public MainWindow()
   {
       InitializeComponent();
       var bla = new ObservableCollection<Car>()
       {
          new Car()
       };

       listview.ItemsSource = bla;
   }
 }

 public class Car
 {
   public Car()
  {
     Path = "bla";
  }
   public string Path { get; set; }
 }
注意我的Car类和行上的属性路径 在视图中显示MemberBinding={Binding Path}


问候

谢谢你们的评论和建议。经过十年的网络搜索,我找到了这个解决方案:

在我的XAML中

在我的XAML.CS中

说明:

在我的设计XAML中,GridViewColumn的DisplayMemberBinding属性保存绑定列表,从后面的代码来看,绑定列表是List_studid、List_studfname、List_studmname、List_studlname。现在,我们有一个捕手在我们的设计中,我们把投掷者从我们的代码后面

公共类用户持有并初始化绑定列表-list\u studid、list\u studfname等

当用户单击my按钮cmdSearch时,我们调用数据库,打开它,执行select查询,将其填充到数据集中,并循环直到列表结束

现在投掷者开始循环,包括列表项=new List;。循环时,列表\u studid、列表\u studid等。。。保存数据库列表\u studid=iDataSet.Tables[list].Rows[i][stud\u id].ToString中的数据,并将其转换为string.ToString

然后我们将它抛出到lvDataBinding.ItemsSource=items;中的listview;。正如我所说,设计XAML捕捉到这个抛出,并将其加载到listview

对于那些偶然发现这个问题的人,这里是我自己的解释——我不知道我在技术上是对还是错,如果我错了,请纠正我

抱歉发了这么长的帖子,这是你的代码:


快乐编码

路径是数据的属性/列吗?DisplayMemberBinding={Binding path}
   public partial class MainWindow : Window
   {
    public MainWindow()
   {
       InitializeComponent();
       var bla = new ObservableCollection<Car>()
       {
          new Car()
       };

       listview.ItemsSource = bla;
   }
 }

 public class Car
 {
   public Car()
  {
     Path = "bla";
  }
   public string Path { get; set; }
 }
           <ListView 
                Margin="10" 
                Name="lvDataBinding">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Student Number" Width="100" DisplayMemberBinding="{Binding list_studid}" />
                        <GridViewColumn Header="First Name" Width="100" DisplayMemberBinding="{Binding list_studfname}" />
                        <GridViewColumn Header="Middle Name" Width="100" DisplayMemberBinding="{Binding list_studmname}" />
                        <GridViewColumn Header="Last Name" Width="100" DisplayMemberBinding="{Binding list_studlname}" />
                    </GridView>
                </ListView.View>
            </ListView>
   public class User
    {
        public string list_studid { get; set; }
        public string list_studfname { get; set; }
        public string list_studmname { get; set; }
        public string list_studlname { get; set; }


    }


   public void cmdSearch_Click(object sender, RoutedEventArgs e)
   {
        NpgsqlConnection iConnect = new NpgsqlConnection
                                        ("Server = " + myModule.Server + ";
                                          Port = " + myModule.Port + ";
                                          User ID = " + myModule.UserID + ";
                                          Password = " + myModule.Password + ";
                                          Database = " + myModule.Database);
        iConnect.Open();
        NpgsqlCommand iQuery = new NpgsqlCommand("Select * from tblstudents_secure", iConnect);
        iQuery.Connection = iConnect;
        NpgsqlDataAdapter iAdapter = new NpgsqlDataAdapter(iQuery);

        DataSet iDataSet = new DataSet();
        iAdapter.Fill(iDataSet, "LIST");

        int lstCount = iDataSet.Tables["LIST"].Rows.Count;//lstCount holds the total count of the list from database

        int i = 0;//used as counter
        List<User> items = new List<User>();
        while (lstCount > i)
        {

            items.Add(new User()
            {
                list_studid = iDataSet.Tables["LIST"].Rows[i]["stud_id"].ToString(),
                list_studfname = iDataSet.Tables["LIST"].Rows[i]["stud_fname"].ToString(),
                list_studmname = iDataSet.Tables["LIST"].Rows[i]["stud_mname"].ToString(),
                list_studlname = iDataSet.Tables["LIST"].Rows[i]["stud_lname"].ToString()
            });

            lvDataBinding.ItemsSource = items;//lvDataBinding is the name of my ListView

            i++;
        }

   }