繁体   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