在Visual Studio中保存数据网格视图的布局(宽度,顺序)

4

我有一些数据网格视图,希望用户能够保留他所做的更改。不是数据更改,而只是布局更改,例如宽度、高度、列的顺序和可能的可见性。我不关心它是自动完成还是通过点击按钮...

编辑:我找到了一种使用设置来实现此功能的方法。我已经添加了设置文件,但我不知道如何在这些设置中添加列顺序或列大小。


这是用于WinForms还是WebForms? - JMP
Windows窗体应用程序 - Ant
3个回答

1

你想要保存的格式信息可以在DataGridView的各种属性中找到。你可能需要花一些时间阅读它的对象模型文档,但你应该能够找到大部分你要寻找的内容。

例如,要保存行排序的方式,你可以持久化这两个属性:

DataGridView.SortedColumn 告诉你按哪一列的值对行进行了排序。 DataGridView.SortOrder 告诉你排序的顺序(即升序或降序)

关于列宽和顺序的信息,你应该能够在DataGridView.Columns集合的成员中找到。

我认为是否一次性记录这些值(例如,点击“保存设置”按钮)或在事件处理程序中逐个记录属性更改是一个偏好问题。 我喜欢在用户没有任何操作关闭表单时自动保存它们。 距离我最后实现类似的功能已经有一段时间了,但我记得应用程序设置是保存此类信息的非常方便的地方。 在“项目属性设置设计器”中,只需为要保留的内容定义设置(确保将范围设置为“用户”)。 然后在运行时在您的代码中分配和加载实际值,如下所示:

// e.g. you defined an integer user setting at design time called ColA_Width, to
// hold the value of the width of "ColA" in your DataGridView.

// Use this code to save the value (either in a specific event handler, or a 
// global "save settings" routine).
Properties.Settings.Default.ColA_Width = MyDataGridViewInstance.Columns["ColA"].Width;
Properties.SEttings.Default.Save();

// Then you'd reverse the assignments when the app next loads so that the saved 
// settings are "remembered" between user sessions.
MyDataGridViewInstance.Columns["ColA"].Width = Properties.Settings.Default.ColA_Width;

我能想到的唯一注意事项是,某些DataGridView属性值不容易保存为字符串(请记住,最终将用户设置保存为XML),但这实际上取决于您要保存哪种类型的设置。

0

我假设你指的是最终用户,如果是这样,那么我会将该信息存储在cookie/数据库中,并在加载时提取它以定制他们的体验。


0
在每个调整大小/排序的事件处理程序中,您可以编写一个帮助函数,将布局指令写入存储介质(如数据库、注册表、XML、配置文件等),并在应用程序加载时读取这些指令以绘制界面。

我所有的数据网格视图控件都是由设计器自动生成的,因此重新排序等功能是一个函数,我无法(或者至少不知道如何)在微软预构建的函数和/或类中添加内容。 - Ant
我明白了,如果是这种情况,如果您想实现您所寻找的高级功能,您可能需要显式地管理这些事件。也就是说,没有一个SaveLayout()类型的函数可以调用来保存布局/排序信息。很抱歉:( - JMP
就像我说的那样,我不在乎它是自动完成还是通过点击按钮实现。 - Ant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接