如何在列中显示带有标点符号的内容
本文关键字:标点符号 显示 | 更新日期: 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;
}