C# 如何在列中显示带有标点符号的内容

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))

我有一个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))
                        {
                            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,这正是我需要的!