Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存ASPxGridView列宽数据_C#_Asp.net_Layout_Devexpress_Aspxgridview - Fatal编程技术网

C# 保存ASPxGridView列宽数据

C# 保存ASPxGridView列宽数据,c#,asp.net,layout,devexpress,aspxgridview,C#,Asp.net,Layout,Devexpress,Aspxgridview,我正在维护一个使用DevExpress ASP.NET v13.2控件的项目,其中有一个显示各种信息的ASPxGridView。最近当我对这个网格的布局做一些工作时,我注意到列宽根本没有被保存。似乎只存储了列顺序和列可见性 以下是我从客户端获得的信息: <dxwgv:ASPxGridView ID="ASPxGridView" runat="server" AutoGenerateColumns="False"

我正在维护一个使用DevExpress ASP.NET v13.2控件的项目,其中有一个显示各种信息的ASPxGridView。最近当我对这个网格的布局做一些工作时,我注意到列宽根本没有被保存。似乎只存储了列顺序和列可见性

以下是我从客户端获得的信息:

<dxwgv:ASPxGridView ID="ASPxGridView" runat="server"
                    AutoGenerateColumns="False"
                    ClientInstanceName="grid"
                    KeyFieldName="ClientId"
                    Width="100%"
                    OnHtmlRowPrepared="ASPxGridView_HtmlRowPrepared"
                    OnCustomCallback="ASPxGridView_CustomCallback"
                    OnClientLayout="gridView_ClientLayout">
  <SettingsBehavior ColumnResizeMode="NextColumn" AllowFocusedRow="True" />
  <SettingsCookies Enabled="True"></SettingsCookies>
  <SettingsText EmptyDataRow="No queries found for the current criteria." />
  <Settings ShowFilterRow="True" ShowGroupPanel="True" ShowFilterRowMenu="True" GridLines="None" />
  <ClientSideEvents BeginCallback="OnGridBeginCallback"
                    EndCallback="OnGridEndCallback"
                    ColumnResized="function(s, e) {
                                   e.processOnServer = true;}">
  </ClientSideEvents>
          <Columns>
因此,根据我的理解,e应该包含一个名为LayoutData的属性,它是一个人类无法读取的逻辑字符串,应该具有只有gridview才能理解的布局信息,如列可见、列顺序、分组、列宽等。但是,在流程中,我注意到传递给gridView_ClientLayout的字符串没有列宽信息。我上面的方法忽略了新的布局信息,因为技术上看不到布局数据的更改,因此不会保存布局!然后刷新网格(从数据库中读取用户的布局),这意味着列宽将重置为数据库中保存的任何列宽

以下是调整宽度之前LayoutData字符串的示例:

"page1|sort1|a20|conditions14|1|3|4|3|6|3|8|3|10|3|12|3|13|3|14|3|15|3|19|3|20|3|21|3|22|3|23|3|visible24|f0|f3|t0|f16|f2|f16|t1|f16|t6|f16|t7|f16|t4|t5|f10|f9|t11|t12|f14|f13|t8|f16|f13|f16|width24|e|e|60px|e|e|e|e|e|e|e|e|e|300px|e|e|e|e|e|e|e|e|e|e|e"
以下是重新zing时,LayoutData传递给girdView_ClientLayout的情况:

"page1|sort1|a20|conditions14|1|3|4|3|6|3|8|3|10|3|12|3|13|3|14|3|15|3|19|3|20|3|21|3|22|3|23|3|visible24|f0|f3|t0|f16|f2|f16|t1|f16|t6|f16|t7|f16|t4|t5|f10|f9|t11|t12|f14|f13|t8|f16|f13|f16|width24|e|e|60px|e|e|e|e|e|e|e|e|e|300px|e|e|e|e|e|e|e|e|e|e|e"
完全一样! 我期望类似于上面的字符串,但更多的部分以px结尾。有点像:

'page1|visible23|f0|f-1|t0|f1|f-1|f2|t1|f3|f4|f4|t3|f5|t2|f6|f6|f6|t4|f7|f11|f7|t5|t6|f8|width23|e|200px|100px|e|e|e|56px|e|e|e|150px|e|200px|e|e|e|200px|e|e|e|120px|128px|e'
(注意以px结尾的各种随机部分) 如果我在Db中手动编辑这些px部分并运行应用程序,则列的大小会相应调整,因此从网格中保存而不是加载到网格中肯定是个问题

我正计划放弃保存/加载这个人类无法读取的gridview布局字符串,因为每当客户需要新的列时,它总是让我头疼不已。我很快就会实现一个XML替代方案,但即便如此,它也需要列宽信息,而这些信息并没有存储在ASPxClientLayoutArgs.LayoutData中,这意味着我必须实现一个肮脏的黑客程序才能将列宽信息注入XML结构。但这是另一天的问题

有人有什么建议吗?这不是一个大问题,我的意思是它只是列宽,但我的scrum管理员非常希望它包含在我们的下一次部署中(因为这个问题而延迟)。他是一个很酷的人,我真的不想让他因为这么小和无足轻重的事情而失望

谢谢各位,
Jean Pierre

我设法找到了一些与gridview的布局功能有关的弃用代码。

我设法找到了一些与gridview的布局功能有关的弃用代码

'page1|visible23|f0|f-1|t0|f1|f-1|f2|t1|f3|f4|f4|t3|f5|t2|f6|f6|f6|t4|f7|f11|f7|t5|t6|f8|width23|e|200px|100px|e|e|e|56px|e|e|e|150px|e|200px|e|e|e|200px|e|e|e|120px|128px|e'