- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 DataGrid 在 C# 中显示字符串表。列名是动态生成的(即在编译时未知)。
这是一个例子:
在这里,数字已转换为字符串。
我使用 DataTable 作为包含整个表(行和列标题)的 DataGrid 的源。但是,我的问题是“气候变化”列中的值未显示在 DataGrid 中。相反,我在控制台上收到以下错误消息
"BindingExpression path error: 'climate w' property not found on 'object'
''DataRowView' (HashCode=22429696)'. BindingExpression:Path=climate
w/change; DataItem='DataRowView' (HashCode=22429696); target element is
'TextBlock' (Name=''); target property is 'Text' (type 'String')"
public DataTable PaValues { get; set; }
private void CreateDataSet()
{
var dt = new DataTable("Perturbation Analysis");
List<String> ics = _perturbationAnalysis.ImpactCatagories();
dt.Columns.Add("Parameters");
foreach (var ic in ics)
{
dt.Columns.Add(Sanatize(ic));
}
foreach (var parameter in _perturbationAnalysis.ParameterNames())
{
var dr = dt.NewRow();
dr[0] = parameter;
for (int i = 0; i < ics.Count; i++)
{
dr[i+1] = _perturbationAnalysis[parameter, ics[i]].ToString();
}
dt.Rows.Add(dr);
}
PaValues = dt;
}
private string Sanatize(string ic)
{
//return ic.Replace("/", "[/]").Replace("[", "").Replace("]", "").Replace(".", " ");
//return "[" + ic + "]";
return ic;
}
<DataGrid
x:Name="PAGrid"
CanUserAddRows="False"
CanUserDeleteRows="False"
ClipboardCopyMode="IncludeHeader"
FrozenColumnCount="1"
ItemsSource="{Binding Path=PaValues,UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource DataGridStyle}"
IsReadOnly="True">
</DataGrid>
private void PaViewAutoGeneratingColumnHandler(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
e.Column = new DataGridTextColumn
{
Binding = new Binding("[" + e.Column.Header + "]"), Header=e.Column.Header
};
}
BindingExpression path error: '[]' property not found on 'object' ''DataRowView' (HashCode=56876317)'.
BindingExpression:Path=[EDIP2003 w/o LT, acidification w/o LT, acidification w/o LT]
最佳答案
查看关于 PropertyPath syntax 的文档,我们可以看到为什么字符串无法映射。
您已经指出并可以修复的第一个是斜杠 /
:
Source Traversal (Binding to Hierarchies of Collections)
<object Path="propertyName/propertyNameX" .../>
The / in this syntax is used to navigate within a hierarchical data source object, and multiple steps into the hierarchy with successive / characters are supported.
[]
) 来解决。
Multiple Indexers
<object Path="[index1,index2...]" .../>
or
<object Path="propertyName[index,index2...]" .../>
If a given object supports multiple indexers, those indexers can be specified in order, similar to an array referencing syntax. The object in question can be either the current context or the value of a property that contains a multiple index object.
Escapes for Property Path Strings
For certain business objects, you might encounter a case where the property path string requires an escape sequence in order to parse correctly. The need to escape should be rare, because many of these characters have similar naming-interaction issues in languages that would typically be used to define the business object.
- Inside indexers ([ ]), the caret character (^) escapes the next character.
private void PaViewAutoGeneratingColumnHandler(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var columnName = (string)e.Column.Header;
// We'll build a string with escaped characters.
// The capacity is the length times 2 (for the carets),
// plus 2 for the square brackets.
// This is not optimized for multi-character glyphs, like emojis
var bindingBuilder = new StringBuilder(columnName.Length * 2 + 2);
bindingBuilder.Append('[');
foreach (var c in columnName)
{
bindingBuilder.Append('^');
bindingBuilder.Append(c);
}
bindingBuilder.Append(']');
e.Column = new DataGridTextColumn
{
Binding = new Binding(bindingBuilder.ToString()),
Header = e.Column.Header,
};
}
关于列名中的 C# DataTable DataGrid 特殊字符 "/"(斜杠),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50327749/
这个问题已经有答案了: When to use single quotes, double quotes, and backticks in MySQL (13 个答案) 已关闭 3 年前。 我正在尝
我需要一个返回某些列值的选择查询。我想要的列以“U_S”开头。 Select * from em 我需要转换上面的查询。 '*' 必须是以下结果(但带有逗号): select COLUMN_NAME
在JPA中设置一对多关系时如何设置外键的列名? 我想将“items_id”的名称更改为“item_id” @OneToMany private List items; 我尝试了以下注释但没有成功: @
我有一个jqGrid列定义如下 name : 'idmycolumn', index : 'idmycolumn', width : 80,
我是否可以编写一个带参数的存储过程,即 mysql 查询,存储过程返回查询的列名? 例如我调用程序: 调用选择器('select * from users') 过程返回列名。使用 informatio
嗨,我刚刚开始学习 sql,我希望使用 concat 将列合并为一个列,但没能做到。我可以在没有 concat 的情况下运行代码,但是当我使用 concat 时,它会给我一个错误代码。谁能告诉我我做错
我们正在使用 java jdk 1.7.0_45,postgresql jdbc 连接器 postgresql-9.3-1100.jdbc41.jar。 这是我们问题的概要,下面粘贴了尽可能多的代码。
import pandas as pd import numpy as np rng = pd.date_range('1/1/2011', periods=6, freq='H') df = pd.
借助 PHP 的 mysqli 扩展,我可以使用 fetch_field() 方法通过 orgname 和 获取列和表的原始(无别名)名称结果中的 orgtable。 PDO 提供了方法getColu
我在 php 中使用 PDO,因此无法使用准备好的语句转义表名或列名。以下是我自己实现它的万无一失的方法吗: $tn = str_replace('`', '', $_REQUEST['tn']);
我想使用 apply 来跨越矩阵的行,并且我想在我的函数中使用当前行的行名。好像不能用rownames , colnames , dimnames或 names直接在函数内部。我知道我可以根据 thi
在编写管理数据的应用程序时,允许最终用户创建或删除最好表示为列的数据类别通常很有用。例如,我正在开发字典构建应用程序;用户可能会决定他们想要向数据添加“备用拼写”字段或其他内容,这可以很容易地表示为另
在我的数据框中,许多列名称以“.y”结尾,如示例所示: dat <- data.frame(x1=sample(c(0:1)), id=sample(10), av1.y = sample(10) ,
在 SQL Server 中,我希望看到 Table_Name 以及数据库中与该 Table_Name 关联的所有列。所以输出应该是这样的: TABLE_NAME COLUMN_N
在我的数据框中,许多列名称以“.y”结尾,如示例所示: dat <- data.frame(x1=sample(c(0:1)), id=sample(10), av1.y = sample(10) ,
在一种情况下,我们动态创建 sql 到 create动态临时表。 table_name 没有问题,因为它是由我们决定的,但是列名是由我们无法控制的来源提供的。 通常我们会使用以下查询检查列名: sel
我有一个数据框,我们可以通过代理 df = pd.DataFrame({'a':[1,0,0], 'b':[0,1,0], 'c':[1,0,0], 'd':[2,3,4]}) 还有一个类别系列 ca
我需要编写一个用户定义的函数,当应用于数据框时,它将返回列位置、列名称、模式和每个变量的类。我能够创建一个返回模式和类的,但是当我包含位置/名称时,我总是收到错误。我一直在这样做, myFunctio
我刚开始使用 QueryDSL 并遇到了问题。是否可以使用列名进行 orderBy?我为 orderBy 动态路径生成找到了这个: Generic querydsl orderBy dynamic p
操作 DataGridView 单元格时,您通常会执行以下操作: MyGrid.CurrentRow.Cells["EmployeeFirstName"].Value = "John"; 这一切都很好
我是一名优秀的程序员,十分优秀!