【问题标题】:Inserting data into gridView without using SqlDataSource and DataBind from a Sql Table在不使用 Sql 表中的 SqlDataSource 和 DataBind 的情况下将数据插入到 gridView
【发布时间】:2013-09-12 18:22:52
【问题描述】:

在我的数据库 Web 应用程序中,我正在尝试使用以下代码 sn-p 将数据从 SQL 表添加到 gridView 中的列中

public void GetRowHeaders(GridView gridViewSample)
    {
        string commandstr = @"SELECT ID FROM WhiteBoardTest WHERE ID!=0 ORDER BY ID";

        SqlCommand rowHeaderCmd = new SqlCommand(commandstr, sqlcon);

        sqlcon.Open();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter();

        da.SelectCommand = rowHeaderCmd;
        da.Fill(dt);


        for (int i = 0; i < dt.Columns.Count; i++)
        {
            for (int j = 0; j < dt.Rows.Count; j++)
            {              
                gridViewSample.Rows[0].Cells[j].Text = dt.Rows[j][i].ToString();
            }
        }

        sqlcon.Close();
    }

当我运行上面的代码时,我得到了错误提示

ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小

我了解发生异常是因为 gridView 没有可用的行或列。

谁能建议我如何向列添加行,而且我没有使用SqlDataSource,因为我想从另一个表向 gridView 添加一列。

【问题讨论】:

    标签: c# asp.net sql sql-server gridview


    【解决方案1】:

    我只会在您的 select 语句中包含额外的列并绑定到 gridview - 除非有特定原因不这样做。注意新的sql!

    public void GetRowHeaders(GridView gridViewSample)
    {
        string commandstr = @"SELECT a.*, b.somecolumn FROM tablea as a inner join tableb as b on b.someid= a.someid WHERE ID!=0 ORDER BY ID";
    
        SqlCommand rowHeaderCmd = new SqlCommand(commandstr, sqlcon);
    
        sqlcon.Open();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter();
    
        da.SelectCommand = rowHeaderCmd;
        da.Fill(dt);
    
        gridViewSample.DataSource = dt;
        gridviewSample.DataBind();
    
        sqlcon.Close();
    }
    

    或者你可以填充一些类的集合(记得使用属性为 gridviews 数据绑定),也许是一个 List,然后将它数据绑定到网格。

    【讨论】:

      【解决方案2】:

      Dayakar,您可以做的是向 DataTable 本身添加额外的列和数据,然后将其绑定到 gridview。下面是一个示例代码。

      private void SetupGridView()
      {
          var dt = GetDataTable();
      
          // add addition column
          dt.Columns.Add(new DataColumn() {ColumnName = "Id2", DataType = typeof (int)});
      
          // add additional data
          for (var i = 0; i < dt.Rows.Count; i++)
          {
              dt.Rows[i]["Id2"] = Convert.ToInt32(dt.Rows[i][0])*2;
          }
      
          GridView1.DataSource = dt;
          GridView1.DataBind();
      }
      

      您也可以合并两个数据表来创建一个数据表,然后将其绑定到gridview。参考http://msdn.microsoft.com/en-us/library/fk68ew7b.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多