gvDisplay.Columns[i].FooterStyle.HorizontalAlign = HorizontalAlign.Right;
我这么写,提示索引超出范围。必须为非负值并小于集合大小。
后台应该怎么对列的样式操作啊
说说你最初的需求吧。
就是改这一列的对齐方式
@夏日星: 这句代码你在哪儿写的?
public void dq()
{
DataTable myDt = gvDisplay.DataSource as DataTable;
for (int i = 0; i < myDt.Columns.Count; i++)
{
if (myDt.Columns[i].DataType == typeof(int))
{
gvDisplay.Columns[i].FooterStyle.HorizontalAlign = HorizontalAlign.Right;
}
}
}
@夏日星: 你要知道,你的datatable的列跟gridview列可能是不一样的。。。
我看你的意思是想如果这一列是数字,就让他居右靠齐是么?
@顾晓北: 恩
@夏日星: 你这个想法是错的,你要知道,你的datatable的列跟gridview列可能是不一样的。。。你应该循环的是gridview的列,而不是datatable的列,而且gridview的列是没有类型的,你只有自己具体知道哪一列才行。
Columns[i] 不正确,i 怎么来的
这个不影响,你可以把i看成固定值数字1
public void dq()
{
DataTable myDt = gvDisplay.DataSource as DataTable;
for (int i = 0; i < myDt.Columns.Count; i++)
{
if (myDt.Columns[i].DataType == typeof(int))
{
gvDisplay.Columns[i].FooterStyle.HorizontalAlign = HorizontalAlign.Right;
}
}
}
你设个断点调试一下,提示错误说索引超出范围,会不会是“i < myDt.Columns.Count”的问题?另外,请注意,gvDisplay.Columns[i]与myDt.Columns[i]不是一回事
应该循环 datagridview .rows
1.你这边需要查看myDt的列数对应的gvDisplay的列数是多少,找到其中关系再进行操作。例如:myDt的列数对应是gvDisplay的列数+1,那么你的代码写成这样的规则的就好了。
2.或者你在if (myDt.Columns[i].DataType == typeof(int))添加一个对gvDisplay列数的判断,看他是否超出了它的索引最大值。
gridview gvDisplay_RowDataBound事件
在这里面就可以实现了