2009-11-05 2 views
0

Я создаю динамический GridView из DataTable, который возвращается из хранимой процедуры. Я призываю и связать со следующим кодом:asp.net find column from dynamic gridview

DataTable dt = Sql.reportData(Convert.ToInt32(Session["userID"])); 
this.GridView1.DataSource = dt.DefaultView; 
this.GridView1.DataBind(); 

Мне нужно рестайлинг определенные столбцы, но они не всегда совпадают номер столбца, и только имеют заголовки текстовую строку, чтобы идентифицировать его. Есть ли простой способ отслеживать столбец так, чтобы я мог редактировать его атрибуты?

Спасибо, Alex

ответ

2

Я столкнулся с этим сам. Вам нужно пройти через имена столбцов, получить индекс, а затем обратиться к индексу, чтобы манипулировать стилем.

Muhammad прав насчет сроков, но вы не будете искать метку - кажется, вы хотите создать всю колонку, верно?

http://forums.asp.net/p/1076872/1584635.aspx

выше имеет несколько вариантов решения.

+0

да нужно рестайлинг целые колонны, просто глядя на http://aspadvice.com/blogs/joteke/archive/2007/02/19/Access-GridView-BoundFields-with-_2200_field-name_2200_.aspx, который упоминается в ссылке, которую вы включили. Спасибо, обновится, как только я дам ему вихрь :) – Alex

0

Лучшее место для поиска элемента управления и его использования будет в событии RowCreated. RowDataBound не следует использовать, потому что вам не нужно манипулировать данными, с которыми привязан столбец. Поэтому переустановим элементы в столбце, выполнив поиск в событии RowCreated.

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.FindControl(""); 
}