2017-01-30 3 views
1

Вот что у меня есть:Настройка динамической высоты DataGrid

OracleCommand cmd3 = new OracleCommand(); 
cmd3.CommandType = CommandType.StoredProcedure; 
cmd3.CommandText = "SP_LPI_REGISTER_CLAIM_LIST"; 
cmd3.Connection = conn; 

cmd3.Parameters.Add("vClaim_Number", OracleType.VarChar, 20).Value = txtClaimSearch.Text; 
cmd3.Parameters.Add("vClaimList", OracleType.Cursor).Direction = ParameterDirection.Output; 

//connection2.Open(); 

var SearchAdapter = new OracleDataAdapter(cmd3); 
var ds = new DataTable(); 
SearchAdapter.Fill(ds); 

ds.Columns[0].SetOrdinal(1); 
ds.Columns[1].SetOrdinal(2); 
ds.Columns[2].SetOrdinal(3); 
ds.Columns[3].SetOrdinal(4); 
ds.Columns[4].SetOrdinal(5); 
ds.Columns[5].SetOrdinal(6); 

DataGrid_ClaimSearch.DataSource = ds; 
DataGrid_ClaimSearch.DataBind(); 

DataGrid_ClaimSearch.Columns[7].Visible = false; 

// The trouble starts here 
var height = 40; 
foreach (DataGridRow dr in DataGrid_ClaimSearch.Rows) 
{ 
    height += dr.Height; 
} 

DataGrid_ClaimSearch.Height = height; 

Последние несколько строк более или менее «код воздуха». Для DataGrid_ClaimsSearch нет Rows. Может ли кто-нибудь сказать мне правильный способ достичь желаемого результата, который должен был бы установить высоту DataGrid динамически?

ответ

0

Я закончил тем, что понял это, но это не очень элегантно. Если кто-нибудь знает, как лучше это сделать, отправьте ответ, и я буду рад дать вам галочку, если она будет работать.

То, что я сделал после того, как я заполняю DataTable, я проверяю, сколько строк есть:

SearchAdapter.Fill(ds); 
int DRC = ds.Rows.Count; 

Затем, после DataBind я установил высоту, основанную на статическом число (50), примерная высота рядов (15), а число записей в DataTable:

DataGrid_ClaimSearch.DataBind(); 

DataGrid_ClaimSearch.Columns[7].Visible = false; 

var height = 50 + (15*DRC); 
DataGrid_ClaimSearch.Height = height; 

Кроме того, на стороне ASPX, я удалил параметр Height, потому что он был перекрывая высоту мой код был пытается установить , Мне также пришлось добавить тег страницы на сторону ASPX (<p>), потому что объекты под моим GridView были слишком близки к нижней части GridView.

Как я уже сказал, все прошло отлично, но я считаю, что есть более элегантный способ сделать это.

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