2017-01-30 11 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

私はこれを理解することになりましたが、それほどエレガントではありません。誰かがこれを行うためのよりよい方法を知っている場合は、回答を投稿してください。もしうまくいけば、私はあなたにチェックマークを付けることができます。

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

次に、DataBindをした後、私は、静的な数(50)に基づいて高さを設定し、私がやったこと

は、私はDataTableのを埋めた後、私はそこにあるどのように多くの行を確認しました行のおおよその高さ(15)、およびデータテーブル内のレコード数:それは私のコードを設定しようとしていた高さをオーバーライドしたため

DataGrid_ClaimSearch.DataBind(); 

DataGrid_ClaimSearch.Columns[7].Visible = false; 

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

また、ASPX側では、私は身長パラメータを削除しました。また、私のGridViewの下のオブジェクトがGridViewの底に近すぎるため、ASPX側(<p>)にページタグを追加する必要がありました。

私が言ったように、それはうまくいったが、私はそれを行うよりエレガントな方法があると信じなければならない。