0

データをバインドした後、グリッドビューのサイズを変更してヘッダーの名前を変更しようとしましたが、データが 100px を超えているため、「インデックスが範囲外でした」というエラーが表示されました。

                conn.Open();
                cmdString = "SQL";
                cmd = new SqlCommand(cmdString, conn);
                cmd.Parameters.AddWithValue("@courseID", CourseID);
                dtr = cmd.ExecuteReader();
                gvAssignment.DataSource = dtr;
                gvAssignment.Columns[7].ItemStyle.Width = Unit.Pixel(100);
                gvAssignment.DataBind();                  
                dtr.Close();
                conn.Close();

別の方法でエラーはありませんが、サイズは 100 に変わりません

    protected void gvAssignment_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[7].Width = 100;
    }
4

2 に答える 2

1

次のように、最初に DataBind を設定してみてください。

   gvAssignment.DataBind();  
   gvAssignment.Columns[7].ItemStyle.Width = Unit.Pixel(100); 

データがバインドされた後に列幅を更新することもできます。これを確実にするために、gridview バインド イベント内に設定できます。

protected void Page_Load(object sender, EventArgs e)
{
    gvAssignment.DataBound += new EventHandler(gvAssignment_DataBound);
}

void gvAssignment_DataBound(object sender, EventArgs e)
{       
    gvAssignment.Columns[7].ItemStyle.Width = Unit.Pixel(100); 
}   
于 2012-12-07T23:20:29.200 に答える
0

クエリを確認してください。「インデックスが範囲外でした」は、列インデックスを指す場合があります (クエリに 8 列がない場合)

于 2012-12-07T23:17:38.823 に答える