簡體   English   中英

ASP.net/C#新手尋找在檢索數據時動態編輯列寬的幫助

[英]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的列集合相關聯。

我將不勝感激。 在此先感謝大家。

計算列寬是一項棘手的工作,並且容易出現故障。 我建議為數據量有限的列設置固定寬度,並讓網格為其他列使用百分比寬度。

例如,假設您有一個地址列表。

  • 郵政編碼應少於10位,因此80px左右就足夠了
  • 城市不受限制,但200px可能會成功
  • 街道地址可能很短也可能很長,因此請使用百分比寬度

如果您對計算列寬不滿意,請看一下這篇文章:

http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q877q

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM