我正在尝试将从搜索中获得的结果添加到列表视图中,但是当显示值时,它不会按预期显示。我希望它有适当的标题以及标题下列出的适当结果,我们将非常感谢任何建议或帮助。
using (SqlConnection cn = new SqlConnection(@"Data Source=*****;Initial Catalog=Database name;Integrated Security=True"))
{
using (SqlDataAdapter sdagetAssetSearch = new SqlDataAdapter("Select * From Asset WHERE (AssetName LIKE '%" + txtSimpleSearch.Text + "%') OR (ModelNumber LIKE '%" + txtSimpleSearch.Text + "%')", cn))
{
DataTable getAssetSearchDt = new DataTable();
sdagetAssetSearch.Fill(getAssetSearchDt);
for (int p = 0; p < getAssetSearchDt.Rows.Count; p++)
{
ListViewItem listitem = new ListViewItem(getAssetSearchDt.Rows[p]["AssetName"].ToString());
lstDisplayAssetSearchDetails.Items.Add(getAssetSearchDt.Rows[p]["AssetName"].ToString());
lstDisplayAssetSearchDetails.Items.Add(getAssetSearchDt.Rows[p]["Category"].ToString());
lstDisplayAssetSearchDetails.Items.Add(getAssetSearchDt.Rows[p]["ModelNumber"].ToString());
lstDisplayAssetSearchDetails.Items.Add(listitem);
}
}
}
答案 0 :(得分:0)
我不知道您是否创建了专栏。但是如果要在ListView中显示列,则必须添加这样的列。
lstDisplayAssetSearchDetails.Columns.Add("Assets Name");
lstDisplayAssetSearchDetails.Columns.Add("Category");
lstDisplayAssetSearchDetails.Columns.Add("Model Number");
您可以在InitializeComponent方法调用之后在Form_Load或Constructor中添加此代码。
还有一件事是你需要设置ViewType
。它应该是DetailView
。
您可以在添加列之前或在设计时直接从属性窗口设置此属性。
lstDisplayAssetSearchDetails.View = View.Details;
然后现在您的ListView已准备好将数据填充到其中。但是,请确保每次填写数据时都应清除以前的项目。在您的代码中,您在填写ListView
之前没有清除项目。
lstDisplayAssetSearchDetails.Items.Clear();
for (int p = 0; p < getAssetSearchDt.Rows.Count; p++)
{
.....
此行应在开始循环之前添加。因此,在填充新内容之前,这将清除项目。
您可以看到我们上面添加了4列。如果我想将数据填充到每个项目的所有列中。然后每个项目应该添加至少2个子项目。
ListViewItem listitem = new ListViewItem(getAssetSearchDt.Rows[p]["AssetName"].ToString());
listitem.SubItems.Add(getAssetSearchDt.Rows[p]["Category"].ToString());
listitem.SubItems.Add(getAssetSearchDt.Rows[p]["ModelNumber"].ToString());
lstDisplayAssetSearchDetails.Items.Add(listitem);
我们不会在Subitem列表中添加AssetName。因为第一列是主ListItem
,而另一列是SubItems
。