2015-07-13 87 views
0

我想允許用戶通過剛開始日期進行搜索。我遇到了這一點,但我不知道如何修改它,這樣如果用戶輸入7它將檢索之日起所有從七月開始數據或任何月7如何搜索開始日期

例如:用戶進入7和搜索,輸出將是:7/2/2015或2/7/2015。

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand("SELECT OrderID, OrderDate, ShipName, ShipCity FROM Orders WHERE OrderDate BETWEEN @From AND @To", con)) 
     { 
      using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
      { 
       cmd.Parameters.AddWithValue("@From", Convert.ToDateTime(this.txtFrom.Text, new CultureInfo("en-GB"))); 
       cmd.Parameters.AddWithValue("@To", Convert.ToDateTime(this.txtTo.Text, new CultureInfo("en-GB"))); 
       DataSet ds = new DataSet(); 
       da.Fill(ds); 
       GridView1.DataSource = ds; 
       GridView1.DataBind(); 
      } 
     } 
    } 
} 
+0

日期時間的startDate =新日期時間(2015年,7,1)。按鄉村文化輸入日期時間(月 - 日與月 - 日)並不簡單,因爲您需要在代碼中添加國家。相反,使用戶輸入的通用時間爲yyyy-mm-dd。 – jdweng

+0

@jdweng對不起,我沒有明白。我想做一個搜索,然後數據將檢索並綁定到gridview。我如何更改sqlcommand? –

+0

你的意思是,如果用戶輸入7,那麼你的應用程序應該檢索7月份的所有記錄? – SpiderCode

回答

0

你的問題不是很清楚,所以我想你需要有隻包含日期等於值由用戶或一個月等於值由用戶給出給出的訂單日期。如果我的假設是正確的,你可以嘗試下面的方法:

for (var intCount = 0; intCount < ds.Tables[0].Rows.Count; intCount++) 
{ 
    var dateTime = Convert.ToDateTime(ds.Tables[0].Rows[intCount]["OrderDate"]); 
    if (!dateTime.Day.ToString().Equals("7") && !dateTime.Month.ToString().Equals("7")) //Replace 7 with user input 
    { 
     ds.Tables[0].Rows[intCount].Delete(); 
    } 
} 
ds.AcceptChanges(); 

然後用ds填充你的網格。

但同樣我對你爲什麼不這樣做對數據的基礎上側本身這種操作有點好奇。因爲將所有數據通過網絡編碼,然後對其執行過濾操作會減慢應用程序的運行速度。

0

看起來像SQL問題給我。您可能想要嘗試使用DATEPART SQL命令。如果用戶在txtFrom中輸入數字,則不會將其轉換爲日期進行比較。你可以設置SqlCommand到:

"SELECT OrderID, OrderDate, ShipName, ShipCity 
    FROM Orders 
    WHERE DATEPART(month, OrderDate) BETWEEN @From AND @To 
    OR DATEPART(day, OrderDate) BETWEEN @From AND @To " 

如果他們沒有在txtTo輸入值,所以只是一個開始日期,你可以做

var from = txtFrom.Text; 
var to = txtTo.Text; 
if (string.IsNullOrEmpty(to)) 
{ 
    to = from; 
} 

這將用一個月的7陷阱什麼如果他們在發件人欄中輸入7,則爲7天。