从SQL Server数据填充listview

时间:2019-01-27 15:49:24

标签: c# wpf listview

我在创建listview时遇到问题我尝试了从SQL Server填充ListView项的其他方法,但无法解决。 我创建了此函数来动态填充列表视图,到目前为止该连接仍然有效,所以那不是问题。但是目前我的问题是,该函数创建了该行,但是当标题列表正常工作时,它们保持为空。

我正在编写以下代码

XAML:

<ListView Name="LV" Height="494" Margin="10,30,10,10">
       <ListView.View>
             <GridView>
                  <GridViewColumn/>
             </GridView>
        </ListView.View>
 </ListView>

C#

            SqlDataAdapter sqladp = new SqlDataAdapter(query, strCon);
            DataSet ds = new DataSet();
            sqladp.Fill(ds, dValue);
            DataTable dt = ds.Tables[0];

            // Add columns
            var gridView = new GridView();
            LV.View = gridView;
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                gridView.Columns.Add(new GridViewColumn
        {
            Header = dt.Columns[i].ToString(),
            DisplayMemberBinding = new Binding($"[{i}]")
         });
            }

            if (dt.Rows.Count > 0)
                //Add Row
                foreach (DataRow row in dt.Rows)
                {
                    string[] arr = new string[dt.Columns.Count];
                    ListViewItem itm;
                    try
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                            arr[i] = row[i].ToString();

                        LV.Items.Add(arr);

                    }
                    catch
                    {

                    }
                }
            LV.Visibility = Visibility.Visible;

1 个答案:

答案 0 :(得分:0)

您正在将rowItems分配给Content,但是rowItems为空且保持为空。也许您是想将Content分配给arr,然后您将其填满,但不对其进行任何操作。

此外,您不需要自己创建ListViewItem。它们是在您将项目添加到ListView.Items属性中时为您创建的。将代码的该部分更改为以下内容(基于更新后的代码):

for (int i = 0; i < dt.Columns.Count; i++)
    arr[i] = row[i].ToString();

LV.Items.Add(arr);

最后,由于要添加数组(而不是具有属性的对象),因此需要将列的绑定固定为以下内容:

gridView.Columns.Add(new GridViewColumn
{
    Header = dt.Columns[i].ToString(),
    DisplayMemberBinding = new Binding($"[{i}]")
});