rowfilter表达式中变量的特殊字符处理
工作環境:windowsXP(SP3)+.net2005+crystalReport11開發版
以下為加載數據源及過濾的代碼:
DataTable dt = new DataTable();
private void Form2_Load(object sender, EventArgs e)
{
DataColumn dc = new DataColumn("c1", typeof(int));
dt.Columns.Add(dc);
dc = new DataColumn("c2", typeof(string));
dt.Columns.Add(dc);
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "中國";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "香港";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "台灣";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "RP001_A'JANAE(女)";
textBox1.Text = dr[1].ToString().Trim();
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = @"RP001_A\JANAE(女)";
dt.Rows.Add(dr);
dataGridView1.DataSource = dt.DefaultView;
}
private void button1_Click(object sender, EventArgs e)
{
string filter = textBox1.Text.Trim();
if (filter == "")
dt.DefaultView.RowFilter = "";
else
dt.DefaultView.RowFilter = "c2='" + @filter + "'";
}
說明:c2列的資料是不可以修改的;除非在取資料時對資料行中的特殊字符做處理(不希望如此).
問題:要顯示c2列內容為"RP001_A'JANAE(女)"的資料.
當按下button1時,提示錯誤:語法錯誤: 'JANAE' 運算子之後遺漏運算元。
string filter = textBox1.Text.Trim();
改成以下也不行
string filter = textBox1.Text.Trim().Replace("'", "\'");
------解决方案--------------------==>dr[1] = "RP001_A'JANAE(女)";
改成下面的看看:
dr[1] = "RP001_A''JANAE(女)";
------解决方案--------------------如1楼所言,用两个单引号替换一个单引号:
string filter = textBox1.Text.Trim().Replace("'", "''");
------解决方案--------------------