C# 在WPF C中从Postgres数据库填充ListView
你好 我正在使用WPF C Visual Studio 2012。我的xaml中有一个列表视图,如: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
<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++;
}
}