C# 我想要一个一致的列宽

C# 我想要一个一致的列宽,c#,asp.net,gridview,C#,Asp.net,Gridview,所以我有一个表,每个单元格中都有一个gridview。基本上是一张桌子里的桌子。现在,每个gridview中的列具有任意宽度,这取决于每个单元格中每个文本的长度。我想让它们都一样,这样看起来就更好了 在循环中,我创建每个gridview,绑定到一个单元格,绑定到一行,并附加到外部表。在将gridview绑定到dataview后,我尝试添加此语句,以使第一列的宽度一致: gvTemp.Columns[0].ItemStyle.Width = Unit.Pixel(400); 但是我得到一个错误,

所以我有一个表,每个单元格中都有一个gridview。基本上是一张桌子里的桌子。现在,每个gridview中的列具有任意宽度,这取决于每个单元格中每个文本的长度。我想让它们都一样,这样看起来就更好了

在循环中,我创建每个gridview,绑定到一个单元格,绑定到一行,并附加到外部表。在将gridview绑定到dataview后,我尝试添加此语句,以使第一列的宽度一致:

gvTemp.Columns[0].ItemStyle.Width = Unit.Pixel(400);
但是我得到一个错误,说0是一个太大的索引,即使gridview不是空的


我是不是用错了方法?我是否将代码放在了错误的位置?

解决这个问题的一种方法是CSS中的使用百分比与javascript中的一些简单数学结合起来。使用javascript获取表中的列数,除以100,并将结果作为宽度值(以百分比表示)应用于每列。这样,无论有多少列,它都会将它们平均分割


当您有许多列并且它们变得太窄而无法合理使用时,这会成为一个问题,在这种情况下,您最好为每列设置一个像素宽度。

看起来columns属性适用于显式声明的列,而您的列可能来自数据源

检查Rows属性。您可能需要设置第一行中单元格的宽度:

Rows[0].Cells[0].Width = Unit.Pixel(400)