【问题标题】:Same values added to gridview for each row为每一行添加到 gridview 的相同值
【发布时间】:2014-04-17 18:04:52
【问题描述】:

我正在使用 RESTful Web 服务,并且我有一个我想要添加到 gridview 的所有对象的列表。当我将它们添加到 DataTable 中的每一行时,每一行的结果都是相同的。我不确定我做错了什么?

protected void ButtonSearch_Click(object sender, EventArgs e)
    {
        Results trackResults = (Results)Session["Result"];
        foreach (Tracks t in trackResults.results)
        {

            //create datatable and columns,
             DataTable table = new DataTable();

            table.Columns.Add("Artist Name");
            table.Columns.Add("Collection Name");
            table.Columns.Add("Track Name");
            table.Columns.Add("Artwork");
            table.Columns.Add("Track Price");
            table.Columns.Add("Release Date");
            table.Columns.Add("Genre");



            for (int i = 0; i < trackResults.results.Count; i++)
            {
                DataRow dr1 = table.NewRow();
                dr1["Artist Name"] = t.artistName;
                dr1["Collection Name"] = t.collectionName;
                dr1["Track Name"] = t.trackName;
                dr1["Artwork"] = t.artworkUrl30;
                dr1["Track Price"] = t.trackPrice;
                dr1["Release Date"] = t.releaseDate;
                dr1["Genre"] = t.primaryGenreName;
                table.Rows.Add(dr1);

            }
            GridView1.DataSource = table;
            GridView1.DataBind();

【问题讨论】:

  • foreach 循环在哪里结束?在“GridView1.DataSource = table;”之前放一个}

标签: c# asp.net gridview datatable


【解决方案1】:

1-foreach循环不需要创建datatable,for循环也不需要写。

2- 您应该在循环外创建数据表和列,然后创建行并将行添加到表中,

3- 将表格分配给 foreach 循环结束的 datagridview。

我在下面编辑了您的代码,但没有编译。试试看

protected void ButtonSearch_Click(object sender, EventArgs e)
{
    Results trackResults = (Results)Session["Result"];

    //create datatable and columns,
         DataTable table = new DataTable();

        table.Columns.Add("Artist Name");
        table.Columns.Add("Collection Name");
        table.Columns.Add("Track Name");
        table.Columns.Add("Artwork");
        table.Columns.Add("Track Price");
        table.Columns.Add("Release Date");
        table.Columns.Add("Genre");

    foreach (Tracks t in trackResults.results)
    {

            DataRow dr1 = table.NewRow();
            dr1["Artist Name"] = t.artistName;
            dr1["Collection Name"] = t.collectionName;
            dr1["Track Name"] = t.trackName;
            dr1["Artwork"] = t.artworkUrl30;
            dr1["Track Price"] = t.trackPrice;
            dr1["Release Date"] = t.releaseDate;
            dr1["Genre"] = t.primaryGenreName;
            table.Rows.Add(dr1);

        }
        GridView1.DataSource = table;
        GridView1.DataBind();
}

【讨论】:

    【解决方案2】:

    看来您需要改变初始化事物的方式。现在,您正在为trackResults.results 中的每条记录创建新表对象,然后在每次迭代时也在绑定网格上。你可能想把它改成这样:

    protected void ButtonSearch_Click(object sender, EventArgs e)
    {
        Results trackResults = (Results)Session["Result"];
    
        //create datatable and columns,
        DataTable table = new DataTable();
        table.Columns.Add("Artist Name");
        table.Columns.Add("Collection Name");
        table.Columns.Add("Track Name");
        table.Columns.Add("Artwork");
        table.Columns.Add("Track Price");
        table.Columns.Add("Release Date");
        table.Columns.Add("Genre");
    
        foreach (Tracks t in trackResults.results)
        {
            DataRow dr1 = table.NewRow();
            dr1["Artist Name"] = t.artistName;
            dr1["Collection Name"] = t.collectionName;
            dr1["Track Name"] = t.trackName;
            dr1["Artwork"] = t.artworkUrl30;
            dr1["Track Price"] = t.trackPrice;
            dr1["Release Date"] = t.releaseDate;
            dr1["Genre"] = t.primaryGenreName;
            table.Rows.Add(dr1);
        }
    
        GridView1.DataSource = table;
        GridView1.DataBind();
    

    【讨论】:

    • 非常感谢!做到了!
    • @user3487108- 但您已接受其他答案。
    猜你喜欢
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多