[英]ASP.net/C# newbie looking for help editing column width dynamically when data is retrieved
我一直在搞這個,還沒有找到一個干凈的解決方案。 目前,我在aspx頁面上有一個asp:DataGrid控件(我可以更改它)。 當我單擊按鈕時,我從數據庫中檢索一個數據集,並使用該數據集中的一個數據表填充我的數據網格。
如果我的asp:DataGrid名為“ tableData”,而我的DataSet名為data,則以下實現將成功填充我的網格:
protected void renderData(object sender, EventArgs e)
{
DataSet data = hc.getDataSet();
tableData.DataSource = data.Tables[0];
tableData.DataBind();
}
但是我的列寬沒有所需的寬。 我想查看data.Tables [0]的每一列中的所有數據,並相應地選擇tableData列的寬度。
我嘗試了許多方法來實現這一目標,但均以失敗告終,但這是我的兩個主要思想和遇到的問題:
解決方案1:在DataBind()之后更改列寬。 我會按照以下方式使用某種類型的代碼
tableData.Columns [i] .ItemStyle.Width = longestField;
該解決方案的問題在於,DataBind()似乎尚未發生,並且我得到了一些類似於異常的空指針。 之后我可以做,但是我怎么知道什么時候完成呢? 即使發生像AfterDataBind這樣的事件,我也不想使用它,因為如果我必須確定在該特定函數中要處理的表。
解決方案2:創建我自己的databind方法並改用它
這種解決方案的問題是我似乎無法自己向tableData添加行(我希望有諸如tableData.NewRow()函數之類的東西,但我似乎找不到適合自己需求的東西。
我也嘗試過使用OnDataItemBound函數,但是我意識到我已經知道如何將DataGridItemEventArgs e與datagrid的列集合相關聯。
我將不勝感激。 在此先感謝大家。
計算列寬是一項棘手的工作,並且容易出現故障。 我建議為數據量有限的列設置固定寬度,並讓網格為其他列使用百分比寬度。
例如,假設您有一個地址列表。
如果您對計算列寬不滿意,請看一下這篇文章:
http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q877q
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.