2014-02-18 65 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我必須將字段綁定到我的數據源。