2014-02-18 64 views
0

我在向代码隐藏的GridView控件添加新列时遇到问题。 我使用DataTable作为我的GridView控件的数据源,绑定后,添加到GridView的每一列都出现在控件的左侧。我需要改变它的位置。在GridView中更改动态创建的列的位置 - ASP.NET

请注意,我需要从代码隐藏中添加列,而不是从.aspx文件中添加列。

GridView定义.aspx文件:

<asp:GridView ID="devicesTable" runat="server" OnRowEditing="deviceEdit"> 
</asp:GridView> 

而且一段代码,在那里我尝试添加一列:

StoredProcedure connection = new StoredProcedure("usp_nsi_mpd_sel"); 

DataTable dataTable = connection.ExecReader(); 
ButtonField buttonField = new ButtonField(); 
buttonField.CommandName = "Select"; 
buttonField.ButtonType = ButtonType.Button; 
buttonField.Text = "Edit"; 

devicesTable.DataSource = dataTable; 
devicesTable.Columns.Add(buttonField); 
devicesTable.DataBind(); 

,这导致buttonField出现在左侧GridView。我如何改变它的位置?

在此先感谢。

+0

如果主要问题是动态更改列的顺序,您可以在这里看到我的答案:http://stackoverflow.com/a/28611217/215752 – Hogan

回答

1

尝试this.Use insert用于动态创建的列

devicesTable.Columns.Insert(0, buttonField) 

DataGridViewColumnCollection.Insert Method

+0

感谢您的回复,但此方法表示即使是0索引的范围。我已经找到了解决方案,但它涉及到一些asp代码:) – an40us

+0

@ an40us您可以将您的解决方案作为注释发布在此处。 –

+0

an40us

1

您可以使用这样的事情,

private void AdjustColumnOrder() 
{ 
    customersDataGridView.Columns["CustomerID"].Visible = false; 
    customersDataGridView.Columns["ContactName"].DisplayIndex = 0; 
    customersDataGridView.Columns["ContactTitle"].DisplayIndex = 1; 
    customersDataGridView.Columns["City"].DisplayIndex = 2; 
    customersDataGridView.Columns["Country"].DisplayIndex = 3; 
    customersDataGridView.Columns["CompanyName"].DisplayIndex = 4; 

} 
+0

我不能访问名称列,因为我没有在.aspx页面中指定它们。我自己找到了解决方案,谢谢:) – an40us

0

所以,要改变任何列中的地位GridView我必须将字段绑定到我的数据源。