【问题标题】:Setting a dynamic height of DataGrid设置DataGrid的动态高度
【发布时间】:2017-06-15 19:38:26
【问题描述】:

这是我所拥有的:

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 的高度?

【问题讨论】:

    标签: c# asp.net datagrid code-behind


    【解决方案1】:

    我最终解决了这个问题,但它不是很优雅。如果有人知道更好的方法,请发布答案,如果可行,我很乐意给你打勾。

    我所做的是在填充 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 的底部。

    就像我说的,它工作得很好,但我必须相信有一种更优雅的方式来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-12
      • 2011-06-04
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      相关资源
      最近更新 更多