我在创建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;
答案 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}]")
});