如何从 SQL 填充列表<>并在网格视图中显示列表值

本文关键字:列表 网格 视图 显示 SQL 填充 | 更新日期: 2023-09-27 17:56:19

我需要使用 SQL 填充列表,然后在网格视图中显示值。我想我非常接近,但由于某种原因,下面的代码不起作用。我将不胜感激任何帮助。谢谢!

您好,我结合了您的解决方案,并且我在一个长列中获取所有值,并且没有标题。有什么想法吗?谢谢!

    List<String> valuesList = new List<string>();
        String queryString = "Select NRCode__c,Amazon_Listing_Level__c, Amazon_Rule_ID__c,ESTShipPrice__c from vendors";
        SqlDataReader dr = classdb.LoadReader(queryString) as SqlDataReader;
        if (dr.HasRows)
        {
            while (dr.Read())
            {
                valuesList.Add(dr.GetString(0));
                valuesList.Add(dr.GetString(1));
                valuesList.Add(dr.GetString(2));
                valuesList.Add(dr.GetString(3));
            }
            dr.Close();
            Label1.Text = "works";
        }
        else
        {
            dr.Close();
            Label1.Text = "No working";
        }

        GridView1.AutoGenerateColumns = true;
        GridView1.DataSource = valuesList;
        GridView1.DataBind();
   }
 }

如何从 SQL 填充列表<>并在网格视图中显示列表值

这里有几个建议:

  • 网格视图的数据源应该是整个集合。循环会一遍又一遍地覆盖数据源。试试GridView1.DataSource = valuesList .
  • 此外,如果您只想从数据库中提取数据并显示在网格中而不对其进行任何更改,则可以通过使用SqlDataAdapter并写入DataTable来大大简化:

例:

String queryString = "Select NRCode__c,Amazon_Listing_Level__c, Amazon_Rule_ID__c,ESTShipPrice__c from vendors";
SqlDataAdapter sda = new SqlDataAdapter(queryString, connectionString);
DataTable results = new DataTable();
sda.Fill(results);
GridView1.AutoGenerateColumns = true;
GridView1.DataSource = results;
GridView1.DataBind();

看起来问题就在这里:

for (int i = 0; i < valuesList.Count; i++)
{
    GridView1.AutoGenerateColumns = true;
    GridView1.DataSource = valuesList[i];
    GridView1.DataBind();
}

你需要摆脱 for 循环。 数据源应该只是值列表。

GridView1.AutoGenerateColumns = true;
GridView1.DataSource = valuesList;
GridView1.DataBind();

您还在循环访问您的值,并不断将它们添加为数据源。更改此内容:

 for (int i = 0; i < valuesList.Count; i++)
    {
        GridView1.AutoGenerateColumns = true;
        GridView1.DataSource = valuesList[i];
        GridView1.DataBind();
    }

成为:

  GridView1.DataSource = valuesList;
  GridView1.DataBind();

替换它:

        dr.Read();
        valuesList.Add(dr.GetString(0));
        valuesList.Add(dr.GetString(1));
        valuesList.Add(dr.GetString(2));
        valuesList.Add(dr.GetString(3));
        dr.Close();
        Label1.Text = "works";

有了这个:

        while(dr.Read())
        {
         valuesList.Add(dr.GetString(0));
         valuesList.Add(dr.GetString(1));
         valuesList.Add(dr.GetString(2));
         valuesList.Add(dr.GetString(3));
        }
        dr.Close();
        Label1.Text = "works";