【问题标题】:ASP.net/C# newbie looking for help editing column width dynamically when data is retrievedASP.net/C#新手在检索数据时寻求帮助动态编辑列宽
【发布时间】:2011-11-26 23:23:20
【问题描述】:

我一直在搞砸这个问题,但还没有找到一个干净的解决方案。目前,我在 aspx 页面上有一个 asp:DataGrid 控件(我愿意更改它)。当我单击一个按钮时,我会从数据库中检索一个 DataSet 并使用该 DataSet 中的一个 DataTable 来填充我的 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 = 最长字段;

这个解决方案的问题是 DataBind() 似乎还没有发生,我得到了一些像异常这样的空指针。之后我可以做,但我怎么知道什么时候做呢?即使有像 AfterDataBind 这样的事件,我也不想使用它,因为如果我必须确定在该特定函数中处理的是哪个表。

解决方案 2:创建我自己的数据绑定方法并改用它

这个解决方案的问题是我自己似乎无法向 tableData 添加行(我希望有一个类似于 tableData.NewRow() 的函数,但我似乎找不到适合我需要的函数。

我也尝试过使用 OnDataItemBound 函数,但我意识到我知道如何将 DataGridItemEventArgs e 关联回 datagrid 的列集合。

我将不胜感激。在此先感谢各位。

【问题讨论】:

标签: c# asp.net datagrid


【解决方案1】:

计算列宽是一项棘手的工作,并且容易出现故障。我建议为数据量有限的列设置固定宽度,并让网格对其他列使用百分比宽度。

例如,假设您有一个地址列表。

  • 邮政编码应少于 10 位数字,因此 80 像素左右就足够了
  • 城市没有那么有限,但 200 像素可能会解决问题
  • 街道地址可能很短也可能很长,因此请使用百分比宽度

如果您在计算列宽方面犹豫不决,请查看这篇文章:

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

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2019-04-09
    • 2021-05-27
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多