2015-07-01 79 views
0

我正在使用C#編寫Web應用程序。我想通過從列表框中選擇一列來過濾GridView,然後立即根據用戶使用RowFilter輸入到文本框中的文本過濾表格。如何使用RowFilter過濾GridView中的數字和日期?

我已經成功幾乎全部的一部分,但我堅持努力解決數字和日期進行比較。

文本的比較效果很好:

DataTable dt = new DataTable(); 
dt = GridView1.DataSource as DataTable; 
dt.DefaultView.RowFilter = string.Format(ListBox1.SelectedItem.Text + " LIKE '%{0}%'", textBox1.Text); 

對於數字我想是這樣的(沒有工作):

dt.DefaultView.RowFilter = string.Format(ListBox1.SelectedItem.Text + " = '#{0}#'", textBox1.Text); 

我猜對數字和日期將是相當多的比較與文本相同?

回答

1

我覺得下面會有對你有幫助...

 string colname = ListBox1.SelectedItem.Text; 
     string value = textBox1.Text; 
     if (colname != null && dt.Columns[colname] != null) 
     { 
      if ("Byte,Decimal,Double,Int16,Int32,Int64,SByte,Single,UInt16,UInt32,UInt64,".Contains(dt.Columns[colname].DataType.Name + ",")) 
      { 
       dv.RowFilter = colname + "=" + value; 
      } 
      else if (dt.Columns[colname].DataType == typeof(string)) 
      { 
       dv.RowFilter = string.Format(colname + " LIKE '%{0}%'", value); 
      } 
      else if (dt.Columns[colname].DataType == typeof(DateTime)) 
      { 
       dv.RowFilter = colname + " = #" + value + "#"; 
      } 
     } 
+0

它的工作原理!非常感謝,這正是我所期待的。幫了我很多。 –

0

請看一看DataView RowFilter Syntax

這些語法規則的RowFilter與字符串,數字和日期的DataGridView。

字符串

dataView.RowFilter = "Name = 'John'"  // string value 
dataView.RowFilter = "Name = 'John ''A'''" // string with single quotes "John 'A'" 
dataView.RowFilter = String.Format("Name = '{0}'", "John 'A'".Replace("'", "''")); 

dataView.RowFilter = "Year = 2008"   // integer value 
dataView.RowFilter = "Price = 1199.9"  // float value 
dataView.RowFilter = String.Format(CultureInfo.InvariantCulture.NumberFormat, 
        "Price = {0}", 1199.9f); 

日期

dataView.RowFilter = "Date = #12/31/2008#"   // date value (time is 00:00:00) 
dataView.RowFilter = "Date = #2008-12-31#"   // also this format is supported 
dataView.RowFilter = "Date = #12/31/2008 16:44:58#" // date and time value 
dataView.RowFilter = String.Format(CultureInfo.InvariantCulture.DateTimeFormat, 
        "Date = #{0}#", new DateTime(2008, 12, 31, 16, 44, 58)); 
+0

我已經試過這一個,但我有一些問題。 –

+0

@ Dentox9哪些問題? –

+0

轉換數字或日期時發生問題並將它們相互比較。你的代碼使用的是dataView,但是我使用的是GridView,所以比較函數之間可能存在差異。但是,Sangram的解決方案解決了這個問題。 –

相關問題