2014-02-18 2 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

<жерех: BoundField DataField = "mpd_num" HeaderText = "Номер платы" /> <жерех: BoundField DataField = "mpd_imei" HeaderText = "IMEI" /> <жерех: BoundField DataField = "mpd_sim_num" HeaderText = "Номер SIM-карты" /> 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 мне пришлось привязать поля к моему источнику данных.

Смежные вопросы