如果gridview是动态绑定的,是否可以调整gridview的列的大小?

时间:2014-01-27 16:52:27

标签: c# gridview data-binding

我正在使用C#和ASP.NET,我在ASP页面上有以下内容:

<div id="divGrid" style='position:absolute; width:920px; height:400px; overflow:auto'>
<asp:GridView ID="GridView_Reports" runat="server" AutoGenerateColumns="true"
    Width="1300px"
    onselectedindexchanged="GridView_Reports_SelectedIndexChanged"
    onrowdatabound="GridView_Reports_RowDataBound"
    CellPadding="4" ForeColor="#333333" GridLines="None">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <EditRowStyle BackColor="#999999" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    </asp:GridView>
</div> 

在代码隐藏中,我有这段代码:

  //Now open the View and bind it to the GridView
  string SelectView = "SELECT * FROM " + MySQLView + "";
  SqlConnection con = new SqlConnection(str2);
  SqlCommand SelectCmd = new SqlCommand(SelectView, con);
  SqlDataAdapter SelectAdapter = new SqlDataAdapter(SelectCmd);

  //Fill the dataset
  DataSet RunReport = new DataSet();
  SelectAdapter.Fill(RunReport);

  GridView_Reports.DataSource = RunReport;
  GridView_Reports.DataBind();

因此,正如您所看到的,数据集是动态创建的。我这样做是因为有几个可能的报告,我想尽可能地使它成为通用的。

从我的谷歌搜索看来,当动态完成时,gridview实际上并没有列。在那里,以下代码行将始终返回0:

int columnscount = GridView_Reports.Columns.Count;

对于我的生活,我不能弄清楚如何遍历所有列并动态设置它们的宽度。硬编码不是一种选择;整个表单是由表驱动的,因此添加新报表就像向表中添加信息一样简单,我不打算对20多个报表的列信息进行硬编码。 Rows.Count工作正常,必须有一种方法以某种方式循环列并设置其宽度?即使我可以让它们的宽度都相同,我也可以使用它,我只需要能够指定那个尺寸!

1 个答案:

答案 0 :(得分:0)

我没有测试过这个,但可能值得一试。或者,您是否可以在DataBinding之后调用单独的方法来执行此操作。

在DataGrid中:

OnItemDataBound="dgMyGrid_ItemBound"

代码背后:

protected void dgMyGrid_ItemBound(object sender, DataGridItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
        {
            e.Item.Cells["MyCol"].CssClass = "MyCssClass";
        }
}

编辑:

道歉,没有正确地阅读你的问题。您使用DataGridView而不是DataGrid。试着看看这个:fix a columns width when a list is bound to a datagridview