C# 如何在列中显示带有标点符号的内容
我有一个DataGrid,当列有标点符号时,它拒绝显示数据。我有以下SQL语句,它将生成的数据放在DataTable中:C# 如何在列中显示带有标点符号的内容,c#,.net,wpf,xaml,data-binding,C#,.net,Wpf,Xaml,Data Binding,我有一个DataGrid,当列有标点符号时,它拒绝显示数据。我有以下SQL语句,它将生成的数据放在DataTable中: string statement = "SELECT TOP 200 [Test] AS [Primary key for Department records.] FROM [dbo].[Children]"; using (SqlDataAdapter adapter = new SqlDataAdapter(statement, connection))
string statement = "SELECT TOP 200 [Test] AS [Primary key for Department records.] FROM [dbo].[Children]";
using (SqlDataAdapter adapter = new SqlDataAdapter(statement, connection))
{
adapter.Fill(dtResults);
}
由于别名中的
字符,DataGrid不会显示DataTable中包含的信息。我通过反复试验发现了这一点。如何让datagrid显示具有这样一列的数据
这是绑定代码:
dgResults.DataContext = myDataTable.AsDataView();
dgResults.AutoGeneratingColumn += new EventHandler<DataGridAutoGeneratingColumnEventArgs>(dataGrid_AutoGeneratingColumn);
dgResults.Visibility = Visibility.Visible;
private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
//Sets the DataGrid's headers to be TextBlocks, which solves a problem whereby underscore characters in the header are ignored.
TextBlock block = new TextBlock();
block.Text = e.Column.Header.ToString();
e.Column.Header = block;
}
dgfresults.DataContext=myDataTable.AsDataView();
dgResults.AutoGeneratingColumn+=新事件处理程序(dataGrid_AutoGeneratingColumn);
dgResults.Visibility=可见性.Visibility;
私有void dataGrid_AutoGeneratingColumn(对象发送方,DataGridAutoGeneratingColumnEventArgs e)
{
//将DataGrid的标题设置为TextBlocks,这解决了忽略标题中下划线字符的问题。
TextBlock=新的TextBlock();
block.Text=e.Column.Header.ToString();
e、 Column.Header=块;
}
我不确定这是否有效,但请尝试:
DataSet dset = new DataSet();
using (SqlDataAdapter adapter = new SqlDataAdapter(statement, connection))
{
adapter.Fill(dset);
}
DataTable dtResults = dset.Tables[0];
我希望这能解决问题
更新:
尽量去掉标点符号
//this is just a list of punctuations. Database field never might not contains some of them.
string[] punct = new string[]{"[", "]" ,"(", ")", "{", "}", "<", ">", ":",
",", "-", "...", "!", "«", "»", "-", ".", "?", "\"", "'", "'", ";", "/"};
foreach (DataColumn column in table.Columns)
{
string colName = column.ColumnName;
bool b = punct.Any(s => colName.Contains(s));
var listOfPunct = punct.Where(s => colName.Contains(s)).ToList();
foreach (string p in listOfPunct)
{
colName = colName.Replace(p, "");
}
column.ColumnName = colName;
}
//这只是一个标点符号列表。数据库字段永远不会包含其中的一些字段。
string[]punct=新字符串[]{“[”,“]”,“(“,”),“{”,“}”,“,”:”,
",", "-", "...", "!", "«", "»", "-", ".", "?", "\"", "'", "'", ";", "/"};
foreach(table.Columns中的DataColumn列)
{
字符串colName=column.ColumnName;
bool b=punct.Any(s=>colName.Contains);
var listOfPunct=punct.Where(s=>colName.Contains(s)).ToList();
foreach(ListofFunt中的字符串p)
{
colName=colName.Replace(p,“”);
}
column.ColumnName=collname;
}
您是如何填写数据表的?请出示代码好吗?当然可以@Dilshod只需一分钟sec@Dilshod-添加到上面你真的需要吗。(dot)?[部门记录主键]是@Dilshod,因为这只是一个例子。我有数百列,都带有标点符号。谢谢Dilshod,这正是我需要的!