我正在尝试创建一个DataGridTableStyle对象,以便我可以控制DataGrid的列宽.我创建了一个绑定到List的BindingSource对象.实际上,它通过以下方式绑定到通过Linq创建的匿名类型列表(为了清楚我正在做的事情,变量名称已更改):
List<myType> myList = new List<myType>(someCapacity);
.
...populate the list with query from database...
.
var query = from i in myList
select new
{
i.FieldA,
i.FieldB,
i.FieldC
};
myBindingSource.DataSource = query;
myDataGrid.DataSource = myBindingSource;
Run Code Online (Sandbox Code Playgroud)
然后我创建一个DataGridTableStyle对象并将其添加到datagrid.但是,它永远不会应用我设置的表格样式属性,因为我似乎无法设置正确的myDataGridTableStyle.MappingName属性.
我在谷歌搜索了大约1/2个小时,并且在一堆不同的论坛中一直看到相同问题的链接(字面意思是相同的文字,就像有人刚刚复制并粘贴了问题......我讨厌那个......) .无论如何,没有一个建议有效,就像那个人在所有其他网站上说的那样.
那么有谁知道我需要设置MappingName属性,以使我的TableStyle实际上正常工作?我在哪里可以从中获取名称?(它不能为空......只适用于绑定到DataTable或SqlCeResultSet等的BindingSource).
我认为这可能是一个问题,我使用Linq创建一个匿名的,更专业的对象版本,只有我需要的字段.我应该尝试将BindingSource直接绑定到List对象吗?或者甚至可以将DataGrid直接绑定到List对象并完全跳过绑定源.
谢谢
PS - C#,Compact Framework v3.5
更新:
我在下面发布了一个解决了我的问题的答案.无论它是否是最好的方法,它确实有效.值得一看,如果你遇到同样的问题.
c# datagrid compact-framework bindingsource datagridtablestyle
我发现这个陈述是一些旧代码,我花了一秒钟才弄明白......
IsTestActive = (TestStateID == 1 ? true : false);
Run Code Online (Sandbox Code Playgroud)
如果我错了请纠正我,但这不是这个吗?:
IsTestActive = (TestStateID == 1);
Run Code Online (Sandbox Code Playgroud)
如果是的话,你为什么要使用第一个呢?哪一个更具可读性?(我想是后者,但我想看看别人怎么想.)
即:
echo H#97llo | MagicPerlCommand
Run Code Online (Sandbox Code Playgroud)
标准输出:
Hallo
Run Code Online (Sandbox Code Playgroud)
是MagicPerlCommand是什么样的
perl -pnle "s/#(\d+)/chr(\1)/ge"
Run Code Online (Sandbox Code Playgroud)
(但这不起作用).
在我们当前的项目中,我们提供PDF下载,可以由用户通过他提交的HTML表单进行自定义.动态生成PDF需要几秒钟,我想将其可视化,例如通过禁用提交按钮直到下载开始.不幸的是,我找不到一种方法来检测下载何时开始*.所以我不知道何时重新启用提交按钮.
我已经尝试将IFrame指定为HTML表单的目标,希望onload触发该事件.但是,它不是 - 可能是因为PDF使用" Content-disposition: attachment"标头发送,并且实际上并未加载到IFrame中.
我现在能想到的唯一解决方案是将PDF生成到服务器上的临时文件,我想避免这种情况.
*)让我澄清一下:我不需要知道下载是否完成,或者即使它真的开始了.我想检测浏览器询问用户是打开还是保存文件的点.我猜这是在浏览器收到HTTP标头时发生的.
在C#控制台应用程序中,是否有一种智能方法可以将控制台输出镜像到文本文件中?
目前我只是将相同的字符串传递给两个Console.WriteLine和InstanceOfStreamWriter.WriteLine一个日志方法.
在回答这篇文章的同时踢了一些小结构,我意外地遇到了以下情况:
使用int字段的以下结构是完全合法的:
struct MyStruct
{
public MyStruct ( int size )
{
this.Size = size; // <-- Legal assignment.
}
public int Size;
}
Run Code Online (Sandbox Code Playgroud)
但是,使用自动属性的以下结构无法编译:
struct MyStruct
{
public MyStruct ( int size )
{
this.Size = size; // <-- Compile-Time Error!
}
public int Size{get; set;}
}
Run Code Online (Sandbox Code Playgroud)
返回的错误是"在将所有字段分配给"之前,不能使用'this'对象.我知道这是结构的标准过程:任何属性的支持字段必须直接从结构的构造函数中指定(而不是通过属性的set访问器).
解决方案是使用显式支持字段:
struct MyStruct
{
public MyStruct(int size)
{
_size = size;
}
private int _size;
public int Size
{
get { return _size; }
set { _size = value; …Run Code Online (Sandbox Code Playgroud) 是否有类似于"Open Command Window Here"的Windows Powertoy for Mac OS?我通过谷歌搜索找到了几个插件,但想看看那些最适合开发人员的插件.
作为一名来自Windows背景的开发人员,我总是会发现不同的Powertoys和Sysinternals应用程序是帮助编程的宝贵工具.是否有一些类似的开发人员可以在Mac世界中观看?
以下代码假设从我的C#应用程序打开CMD并打开文件text.txt.
我尝试将文件路径设置为环境变量,但是当记事本打开时,它会查找%file%.txt而不是text.txt
知道为什么吗?
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents=false;
proc.StartInfo.EnvironmentVariables.Add("file", "c:\\text.txt");
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "notepad";
proc.StartInfo.Arguments="%file%";
proc.Start();
proc.WaitForExit();
Console.WriteLine(proc.ExitCode);
Run Code Online (Sandbox Code Playgroud) 我真的很好奇这个,有谁知道为什么他们在这个上打破了约定?
谢谢,Ciaran
c# ×5
macos ×2
.net ×1
c#-3.0 ×1
cmd ×1
coding-style ×1
coldfusion ×1
command-line ×1
console ×1
datagrid ×1
download ×1
file ×1
finder ×1
history ×1
html ×1
iframe ×1
javascript ×1
notepad ×1
perl ×1
readability ×1
regex ×1
struct ×1
substitution ×1
terminal ×1
text ×1