在框中,Infragistics UltraGrid控件允许您在网格弹簧中创建最后一列以填充网格边界矩形的剩余未使用部分.
____________________________ | Col1 | Col 2 | Col 3---->| | |
我已经搜索过但找不到制作不是末端柱弹簧的柱来填充宽度的方法.
例如,一行具有文本描述,后跟一列包含执行某些操作的按钮的行.您希望文本描述占据大部分宽度,并使具有按钮的列对接到网格的边界矩形的末尾.
__________________________________ | Text Col ------------>| Button | | |
有没有人有任何尝试让UltraGrid控件开箱即用的经验,或者有些黑客让它工作?
我实际上很难找到主要的ASP.Net组件套件的任何详细的,无偏见的第三方评论.我主要对Telerik,DevExpress和Infragistics的详细比较感兴趣 - 主要用于ASP.Net(不是WPF/Silverlight).
这里有很多问题和答案 - 但我发现的没有提供控件的详细比较/差距分析,优势和劣势的比较,支持和文档的非轶事比较等.
像Gartner报告那样的东西几乎是理想的 - 有没有人见过任何其他研究报告或其他详细的第三方分析?
我正在评估使用CAB进行新的.net 3.5 winform项目
我打算使用Infragistics工具集,它被称为'CAB兼容'
虽然CAB立即让我专注于我的业务而不是编码基本的对接/登录/等代码,但我觉得我能够自己完全达到相同的功能水平(增加灵活性/反应性奖励)当你拥有'代码'时,你就拥有了.
我正在寻求使用它的人对微软CAB的一些反馈:
我正在使用Winforms,CAB,C#和Infragistics.我正在尝试使用与WCF连接的后端使用MVP.
在我的演示者中,我有我的模型,我们称之为AgreementDataContract.此数据协定有许多属性:
...
[DataMember]
public byte[] PVImage { get; set; }
[DataMember]
public byte[] OntwerpImage { get; set; }
[DataMember]
public Decimal WattpiekPrijs { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
您会注意到Image存储为byte [].我将这些属性绑定到我的用户控件上的控件:
BindingHelper.BindField(_ultraPictureBoxPV, "Image", _bindingSource, "PVImage");
BindingHelper.BindField(_ultraPictureBoxOntwerp, "Image", _bindingSource, "OntwerpImage");
Run Code Online (Sandbox Code Playgroud)
BindingHelper只是将BindingContext添加到指定的Controler(control.BindingContext.Add(...)).
无论如何,问题是:数据契约包含图像作为bytearray,而我绑定到图像.这会导致属性保持为"null",因为他不想将一个Image放在byteArray中;)
我试过玩它,但我想我有两种可能性:
我可以尝试使用某种转换器吗?因此,当插入Image时,它将作为byteArray而不是Image传递给Model(=数据绑定).
我可以删除绑定并在表单"提交"时创建一个事件,并将图像转换为byteArray并填写模型.(=没有数据绑定)
TL; DR; 您是否知道在将图像传递给数据绑定时将图像"转换"为bytearray的方法?
我希望我的问题很明确!谢谢您的帮助
我继承了一个以我无法撤消的方式修改过的项目.除了通过"属性"窗口之外,表单上的每个控件都不可修改,并且每个控件在通常为非可见项目(例如DataSource)保留的部分中的下方区域(见图像)中都有一个图标.如何撤消此操作并将设计器返回到可用的版本而不必全部擦除并重新开始?

是的,我知道这个问题已被多次报道,但我的情况似乎不符合任何建议的解决方案(除非我错过了什么).
ASP.NET页面设置(简化)是:用户单击链接(技术上是Infragistics WebDataTree的节点),此操作绑定位于UpdatePanel中的网格(Infragistics WebHierarchicalDataGrid).
现在这在本地测试系统中工作正常.当部署到生产服务器时 - 它也可以工作 - 大多数时候,但有时会抛出错误:
无法加载viewstate.正在加载视图状态的控制树必须与在上一个请求期间用于保存视图状态的控制树匹配
如果生产系统负载较重(访问它的用户越多),这似乎就会发生.同样,我没有构建任何动态控件,只是按钮和按钮单击时填充的网格.
可能是什么导致了这个?为什么这不会永远发生,但有时呢?知道怎么解决吗?
UPDATE
这是确认的情景
一个会话如何影响另一个会话的视图状态?
更新2
应用程序部署到单个Windows 2008/IIS7服务器(没有Web场/ Web园,没有负载平衡器).在运行时期间不会推出更新.
如果单个用户访问它,但是当多个用户访问服务器时,应用程序工作正常 - 最终其中一些用户正在获取ViewState错误(而其他用户仍能正常工作).他们都在做同样的事情 - 点击触发UpdatePanel内部网格重新绑定的树节点.他们使用不同的浏览器 - IE(9-11),FF,Chrome - 错误可能发生在随机用户/浏览器上
哦,我们也没有加密ViewState.
更新3
堆栈跟踪:
System.Web.UI.Control.Load上的System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState)中System.Web.UI.Control.LoadViewStateRecursive(Object savedState)处的System.Web.UI.Control.LoadViewStateRecursive(Object savedState) System.Web.UI.UI.Control.LoadViewStateRecursive中的.LoadChildViewStateByIndex(ArrayList childState)(系统中System.Web.UI.Control.LoadViewStateRecursive(Object savedState)的System.Web.UI.Control.LoadChildViewStateByID(ArrayList childState)中的Object savedState). System.Web.UI.Control.LoadViewStateRecursive处的System.Web.UI.UI.Control.LoadChildViewStateByIndex(ArrayList childState)中的System.Web.UI.Control.LoadViewStateRecursive(Object savedState)中的Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) System.Web上的System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState)中的System.Web.UI.Control.LoadViewStateRecursive(Object savedState)处的System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState)处的Object savedState. UI.Control 系统.Web上的System.Web.UI.Page.LoadAllState()的System.Web.UI.Control.LoadViewStateRecursive(Object savedState)上的System.Web.UI.UI.Control.LoadChildViewStateByIndex(ArrayList childState)中的.LoadViewStateRecursive(Object savedState) .UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
更新4
似乎如果我减少每次点击返回的数据大小(例如20行而不是100行),问题就会消失或者出现频率降低很多.
我已经尝试过操纵ViewState - 例如将其拆分为块,使用session作为ViewState存储来减少实际发布的页面大小 - 没有任何效果.
经过与Infragistics的长时间讨论后,看来带有SHIFT的ShortCuts在我的文化"nl-BE"中显示为MAJ.首先,文化"nl-BE"和AZERTY有点奇怪.如果想了解更多,请阅读http://en.wikipedia.org/wiki/AZERTY.重要的是:
其他键是相同的,即使传统上特殊键的名称用英语打印在它们上面.这是因为比利时主要是双语(法语 - 荷兰语)和官方三种语言(第三语言,德语,在东方语言中使用).
所以MAJ印刷为SHIFT.例如,在Office中,带有SHIFT的快捷方式显示为SHIFT.在Infragistics控件中,它们显示为MAJ.这让我们的客户感到沮丧.
因此,在与Infragistics讨论后,他们声称这是一个Windows Api调用,它返回MAJ而不是SHIFT.我从他们那里得到了一个展示行为的示例项目.所以现在我的问题是为什么Windows Api调用不会返回SHIFT,如果它是正常的,那么Office如何才能正确显示它?
获取密钥文本的代码是:
NativeWindowMethods.GetKeyNameText((int)scanCode, sb, 256);
Run Code Online (Sandbox Code Playgroud)
和
class NativeWindowMethods
{
#region MapVirtualKey
[DllImport("user32.dll")]
internal static extern int MapVirtualKey(uint uCode, uint uMapType);
#endregion //MapVirtualKey
#region GetKeyNameText
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern int GetKeyNameText(
int lParam,
[MarshalAs(UnmanagedType.LPWStr), Out]System.Text.StringBuilder str,
int size);
#endregion //GetKeyNameText
}
Run Code Online (Sandbox Code Playgroud)
如果是Shiftkey,则扫描码为2752512(2a),并返回MAJ.
那么,我的问题是什么?
为了完整性,我将粘贴Utilities类的完整代码.从Form下一次调用完成:
systemLocalizedString = Utilities.GetLocalizedShortcutString(shortcut);
使用快捷键= ShiftF12.调用后,systemLocalizedString等于"MAJ + F12".
更新:在Hans Passant的帮助下,我下载了Microsoft Keyboard Layout Creator并导出了我当前的键盘布局.在.klc文件中没有找到MAJ,只有Shift(例如2a Shift).那么为什么user32.dll会返回MAJ?甚至更奇怪的是,当我复制.klc文件并将其安装为新键盘时,突然user32.dll确实为新安装的键盘返回Shift(虽然它是一个精确的副本).
Utilities.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using …Run Code Online (Sandbox Code Playgroud) 我正在使用带有滚动条的控件内部的Infragistics XamDataGrid.父控件中有几个其他控件,我需要能够在父控件中自由滚动.但是,只要鼠标悬停在XamDataGrid上,XamDataGrid就会窃取父焦点并锁定父控件的滚动条.
我玩了几个属性.将Focusable属性设置为 false不解决问题.将IsEnabled属性设置为false有效,但它禁用了整个网格并阻止了与网格的任何交互(duh).
有没有办法删除/禁用XamDataGrid的滚动功能,以使其父元素可以自由滚动,而无需更改XamDataGrid的其他功能(即不完全禁用与网格的交互)?
编辑:
真正让我对这个问题感兴趣的是它似乎并不仅仅与XamDataGrid隔离.我发现Infragistics控件有一个东西可以在他们不应该和类似的好事行为时窃取焦点.
当然,许多这些问题可能都是在逐个控制的基础上解决的,但我不能动摇那种有更好的总体解决方案的感觉,特别是在通过控制属性进行梳理无法产生预期结果时.
我使用Infragistics XamDialogWindow来近似WPF中的MDI窗口.
基本上我有一个用户控件,我分配给窗口的内容,然后将XamDialogWindow添加为Grid的子项.
然后我有两个按钮,将窗口显示为"Tile"或"Cascade".
级联工作得很好,但我遇到了Tile方法的问题.
我使用容器的"ActualWidth"和"ActualHeight"属性获得可用的宽度和高度.
然后我计算所需的行数和列数.
接下来我遍历列并计算列中有多少行(这意味着如果有奇数个窗口,例如5,我将在列0中有两行,在列1中有3行).
每个窗口的宽度计算为"AvailableWidth/numColumns"
每个窗口的高度计算为"AvailableHeight/WindowsForThisColumn"
然后我遍历行并计算我们定位的窗口的左上角坐标,如下所示:
left = columnIndex*width
top = rowIndex*height
然后设置窗口的Left,Top,Width和Height属性.
问题
例如,Left,Top,Width和Height属性似乎正确计算
这应该给出一个4个窗口的漂亮网格,没有边距填充所有可用空间,但这不是结果.
窗口似乎在显示时偏移(见下图).
如果我查看Left,Top,Width和Height属性,它们看起来都是正确的.
奇怪的是,如果我第二次单击"Tile",它们将全部正确显示.
如果我在第二次单击平铺后移动窗口,它们将正确显示.
我尝试过使用Canvas并设置Canvas.Left和Top属性,每次都有相同结果的网格,stackpanel和wrappanel.
谁能帮我?我认为WPF在渲染时测量尺寸和位置可能是一个问题
var childrenToArrange = Children.Where(a => a.WindowState != Infragistics.Controls.Interactions.WindowState.Minimized).ToList();
var availableWidth = Panel.ActualWidth;
var availableHeight = Panel.ActualHeight;
if (Layout == MDILayout.TILE)
{
//get the number of rows and columns
int rows = (int)Math.Sqrt(childrenToArrange.Count);
int columns = …Run Code Online (Sandbox Code Playgroud) 我在infragistics上有超图,显示1小时的实时数据.
我想使用下面的光标选择x轴上的任何时间;
目前我可以选择数据点.没问题.
但是我需要用鼠标绘制矩形并选择矩形边框之间的数据点.
我有点无助,因为我搜索了很多,但在互联网上没有看到类似的东西.
我怎样才能做到这一点?我需要你的知识.
infragistics ×10
c# ×6
winforms ×3
.net ×2
asp.net ×2
wpf ×2
cab ×1
controls ×1
culture ×1
data-binding ×1
devexpress ×1
frameworks ×1
localization ×1
mvp ×1
telerik ×1
ultrawingrid ×1
user32 ×1
viewstate ×1
web-controls ×1
wingrid ×1