C# DataTable列名包括方括号[名称]
我在向DataGrid添加名为“[name]version”的列时遇到问题。如果我有类似“[name]”或“version[name]”的东西,那么转义、unicode或加倍所有工作。只有在右括号后面有字符时,才会出现问题。“[[name]version]”也可以,但不是我需要的 我使用的是WPF和C#,这行代码将DataTable绑定到DataGridC# DataTable列名包括方括号[名称],c#,wpf,datagrid,brackets,C#,Wpf,Datagrid,Brackets,我在向DataGrid添加名为“[name]version”的列时遇到问题。如果我有类似“[name]”或“version[name]”的东西,那么转义、unicode或加倍所有工作。只有在右括号后面有字符时,才会出现问题。“[[name]version]”也可以,但不是我需要的 我使用的是WPF和C#,这行代码将DataTable绑定到DataGrid datagrid1.ItemsSource = dataTable1.DefaultView; 我收到的错误是: “PropertyPath
datagrid1.ItemsSource = dataTable1.DefaultView;
我收到的错误是:
“PropertyPath”语法中的语法错误
“Binding.Path'[name]'中出错。。。
“版本”
SQL Server允许在列名周围使用方括号或双引号。。。您可以改为使用双引号吗?SQL Server允许在列名周围使用方括号或双引号。。。您可以改为使用双引号吗?我刚刚编写了一个帮助函数,它更改ColumnName属性以删除诸如[]和空格之类的特殊字符,而我只是将这些字符保留在Caption属性中。因此,我将标题绑定到列标题,将ColumnName绑定到DisplayMemberBinding。我刚刚编写了一个帮助函数,它更改ColumnName属性以删除特殊字符,如[]和空格,我只需将这些字符保留在Caption属性中。因此,我将标题绑定到列标题,将列名称绑定到DisplayMemberBinding。您需要做的就是跳出结束方括号 见:
你所需要做的就是摆脱封闭的方括号 见:
能否更改列名,使其不存在此问题?e、 g.“VersionName”@taylonr,不,公司需要括号作为括号,括号内的名称是商标实体/符号。@Ben。。。但为什么您关心数据库中的字段使用商标名命名?在DB中将其命名为field1,然后显示“[我的商标括号内的字段]名称”,仅显示我的2美分,我知道您不能总是更改字段名称,但这可能是一个简单的解决方法,我在WPF程序中引用DataGrid上的列标题名称,而不是数据库表中的列名。我将无法使用WPF使“[My Trademarked Bracketed Field]Name”在DataGrid中用作列名标题。糟糕的是,我看到DataGrid和我的大脑被转换为DataSet。您能否更改列名以避免出现此问题?e、 g.“VersionName”@taylonr,不,公司需要括号作为括号,括号内的名称是商标实体/符号。@Ben。。。但为什么您关心数据库中的字段使用商标名命名?在DB中将其命名为field1,然后显示“[我的商标括号内的字段]名称”,仅显示我的2美分,我知道您不能总是更改字段名称,但这可能是一个简单的解决方法,我在WPF程序中引用DataGrid上的列标题名称,而不是数据库表中的列名。我无法使用WPF将“[My Trademarked Bracketed Field]Name”作为DataGrid中的列名标题。糟糕的是,我看到DataGrid和我的大脑被转换为DataSet。不,DataGrid列名标题必须包含开放方括号和闭合方括号。请注意,我指的是WPF窗口中的DataGrid,而不是数据库表上的数据列。不,DataGrid列标题名称必须包含打开方括号和关闭方括号。请注意,我指的是WPF窗口中的DataGrid,而不是数据库表上的数据列。
var ds = new System.Data.DataSet();
var dt = ds.Tables.Add();
dt.Columns.Add("[a[b]c", typeof(decimal));
dt.Rows.Add(1);
dt.Rows.Add(2);
dt.Rows.Add(3);
dt.Select("[[a[b\\]c]=3").Length.ShouldBe(1);