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

本文关键字:标点符号 显示 | 更新日期: 2023-09-27 18:09:24

我有一个DataGrid,当列有标点符号时拒绝显示数据。我有以下SQL语句,它将结果数据放置在一个数据表中:

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中的信息。我是通过反复试验发现这一点的。如何让数据网格显示具有这种列的数据?

这是绑定代码:
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;
}

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

我不确定这是否有效,但尝试:

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;
        }