asp.net C# GridiVew 更改后 DataBind 和更多高级功能

问题描述

请原谅这个有点长的问题。而且我意识到我是即时学习 aspx/c# webforms 的,所以我可能会遗漏一些基本/明显的细节。如果可能的话,我对模块化设计和可重用性感兴趣......仅供参考,我似乎正在运行 .Net/C# v4.0.30319。

tl;dr

GridView 的数据绑定后,有什么方法可以更改它吗? 有什么方法可以跨页面共享主 GridView 吗?


长篇大论

假设您有一个 GridView,但出于某种原因,您无法更改基础 SQLDatasource 查询或字段列表,并且想要切换 A 列和 B 列的位置。有没有什么干净的方法可以做到这一点?对于一个你需要知道 GridView 何时完成创建自己(你可以 GridView.Rows.Count 但你必须检查一个静态数字)。然后我想你可以做通常的复制 A 到 temp,复制 B 到 A,复制 temp 到 B:

var temp = e.Row.Cells[Ath column].Text;
e.Row.Cells[Ath column].Text = e.Row.Cells[Bth column].Text;
e.Row.Cells[Bth column].Text = temp;

几天前我不得不这样做,我想有一种更简单的方法。我同意更改数据源查询或 asp:BoundField 字段的顺序是可行的方法。老实说,我现在忘记了为什么这两个都不是一个选项......

与上述类似,我还必须添加带有汇总统计信息的底行。与创建一个全新的查询或更新当前查询不同,读取 GridView 中的某些值并使用这些值会容易得多。例如,假设您需要计算比率:

[for row where Cell[0].Text = numerator Convert.ToDoulbe(e.Row.Cells[5].Text)] / [for row where Cell[0].Text = denominator Convert.ToDoulbe(e.Row.Cells[5].Text)] 

同样,我继承了许多通过 GridViews 共享相似数据的页面,如果有一个被多个页面使用的主 gridview 会很棒,但根据页面的不同,您可以删除行、删除列和重新排列列(不一定按这个顺序)。

我可以通过 rowdatabound() 函数底部的这段代码删除列:

e.Row.Cells[30].Visible = false;

对于一行也类似:

if (e.Row.Cells[0].Test = "some row that needs to be removed")
    e.Row.Visible = false;

但我不知道如何切换列顺序。我知道并使用过 UserControls 并且知道您不希望将具有编辑/删除功能的 GridView 放在 UserControl 中并在页面之间共享。尽管如此,能够跨页面共享只读 GridView 还是很不错的。在这种情况下,您如何在整个应用程序中保留 GridView 的单个副本,并且每分钟只更新一次?

我只是觉得我强行对 GridViews 进行了大量更新,也许还有更好的选择。对任何建议持开放态度。非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...