2013-04-29 38 views
1

嘿家伙。我正在使用带有两列的ListView来读取SQL server的表格。所以一切都是正确的,当我有它ListBox,但现在我改变为ListView并使列出现问题,并且行正在进入,但没有文本,所以它只是显示一个空白的ListView可滚动。ListView显示没有任何内容的行WPF C#

这里是XAMLListView

<ListView Height="315" HorizontalAlignment="Left" Margin="26,15,0,0" Name="listView1" VerticalAlignment="Top" Width="324"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn DisplayMemberBinding="{Binding Title}" Header="Title" Width="240"/> 
      <GridViewColumn DisplayMemberBinding="{Binding Price}" Header="Price" Width="75"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

而且这是被称为在TextChanged事件,它在从服务器表调用的代码。

public void addtoList() 
{ 
    cn.Open(); 
    String cmdString = "Select Title, Price from tblCart"; 
    SqlCommand cmd = new SqlCommand(cmdString, cn); 
    SqlDataReader dr = cmd.ExecuteReader(); 
    double subT = 0; 
    double tax = 1.09; 
    double total = 0; 

    while (dr.Read()) 
    { 
     int count = dr.FieldCount - 1; 

     for (int i = 0; i < count; i++) 
     {     
      listView1.Items.Add(dr["Title"].ToString()); 
      listView1.Items.Add(dr["Price"].ToString()); 
      subT += Convert.ToDouble(dr["Price"]);      
     }     
    } 

    total = Convert.ToDouble(subT * tax); 
    subTotal.Text = subT.ToString(); 
    totalBlk.Text = total.ToString(); 
    cn.Close(); 
} 

有关如何解决此问题的任何信息将不胜感激!

+0

您正在为每列添加一行。 ListViewItem没有自定义属性。你将需要创建一个类或stuct来保存你的属性标题和价格。 – Paparazzi 2013-04-29 20:26:08

回答

1

应该有像下面的代码自定义对象,

public class CustomItem 
{ 
    public string Title { get; set; } 
    public string Price{ get; set; } 
} 

,然后添加自定义项目列表

listView1.Items.Add(new CustomItem{Title =dr["Title"].ToString(), Price=dr["Price"].ToString()}); 
+0

美妙的回复它完美的工作!标记为答案。 – Shawn 2013-05-01 02:43:15

+0

感谢您接受。并希望当您有资格投票时,您会投票回答:) – 2013-05-02 05:03:34

0

您正在将项目添加到listview集合中。绑定ListView的项目源到结果的数据表:

SqlDataAdapter adp = new SqlDataAdapter(cmd); 
DataSet ds = new DataSet(); 
adp.Fill(ds); 


listView1.ItemsSource = ds.Tables[0];