asp.net如何做有範圍性的搜尋功能
Public Sub databind()
Dim sql As String
sql = "select * from User_m where Adddate like '%" + Trim(SearchBox1.Text) + "%'"
Dim datashow As New DataSet
datashow = db.getDataSet(sql, cn)
Session("datashow") = datashow
GridView1.DataSource = datashow
GridView1.DataBind()
End Sub
這個是基本我用日期這個去做搜尋!
畫面上會有兩個TextBox1和TextBox2。
現在不會做的地方是!
如果我只在box1上面打2007/01/01那這之後的資料要跑出來
及只在box2上面打2007/05/05那這之前的資料要跑出來
再者在box1和box2上面各打上2006/11/01、2007/08/08
在這期間的資料要跑出來!(基本上數字是隨機變動的)
那在判別式上面要如何去寫。
簡單來說這是一個有設定範圍的搜尋!
希望有專業的人可以幫忙把那一段判別式寫出來!
小弟目前還在學習當中,這是前輩出的作業的一部分!
(但這是卡在這邊不會,其他簡單的還ok!)
感謝幫忙…Orz 一個頭兩個大!
如果知識這邊顯示有問題的話!
可否幫個忙寄到我的信箱!
chronotriggermax@yahoo.com.tw
感謝感謝!
我是用visual studio2005
使用mysql!!
感謝!
有人有說Session() 不要大量使用。
但如果不用Session() 的話。那還有什麼方法嗎?
這是目前我會的方式!
Dim datashow As New DataSet
GridView1.PageIndex = e.NewPageIndex
datashow = Session("datashow")
GridView1.DataSource = datashow
GridView1.DataBind()
上面這是我換頁的寫法!
如果把下面的Session("datashow") = datashow這句拿掉呀!
換成就只會跑出第一頁,第二頁就看不到了!
如果要Close掉的話那要怎麼寫呀!
不太了解意思!
因為這個東西只是拿來看!
有多少人數加入網站裡!所以前輩才叫我這樣子寫的吧!
我這個是有做分頁啦!
一頁顯示16筆資料。
3.如何知道我現在在第幾頁?
這個我就不了解你的意思了?
是說我目前選到第幾頁嗎?
5 個解答
- 小飛俠Lv 51 0 年前最佳解答
基本上這只是Query的基礎應用
可以給你一個方向你試著依照以下流程把程式寫出來吧!
前制條件:
你必須寫出functoin判斷TextBox1和TextBox2不得為空與必須為日期格式
'程式開始(請加在你的sql下,因為不知你的欄位,我預設日期欄位為tmpdate,請自行修改)
if TextBox1="" and TextBox2<>"" then
sql=" and tmpdate<=TextBox2 "
elseif TextBox1<>"" and TextBox2="" then
sql=" and tmpdate>=TextBox2 "
else
if TextBox1>TextBox2 then
sql=" and tmpdate>=TextBox2 and tmpdate<=TextBox1 "
else
sql=" and tmpdate>=TextBox1 and tmpdate<=TextBox2 "
end if
end if
2007-11-13 13:09:43 補充:
抱歉嘿,打太快,請把上列發表的sql=替換成以下
sql=sql &
2007-11-13 21:00:32 補充:
1.這就是我覺得奇怪的地方!
Dim datashow As New DataSet
你宣告datashow 為新資料集
但Session("datashow") = datashow
又不把Session("datashow") 給GridView
GridView1.DataSource = datashow
=>Session("datashow") 這行根本是多餘的
Session一向是微軟被詬病的一個項次
不過也不是不可取(用來存資料量小的資料很好用,如登入帳號)
用來存放資料集就不大好(畢竟全域變數別用太多)
2007-11-13 21:02:32 補充:
2.你用的就不是Session阿
你不是New一個資料集,將查詢結果丟給GridView嗎
這種方式叫動態宣告(也可以說是區域變數)
不過使用完畢後記得要Close掉,否則就要等此頁面結束才會釋放歐!
2007-11-15 13:41:28 補充:
cn應該是你的connect吧
確定沒用到就下
cn.close
一般這一行都是下在程式碼的最後面!
2007-11-15 16:09:16 補充:
目前你的寫法雖然可行(適用於使用者少量時)
如果要達到分頁效果,請善用的pagesize和pagecount的使用(這算是留言版模式的應用題)
給你一個方向(因為說太多或說太快都沒用,你要仔細想一下我下面列出的項次,這必須一步一步來)
你可以先參考訪間的留言版
1.一頁有幾個主題?(pagesize)
2.有幾頁?(pagecount)
3.如何知道我現在在第幾頁?
了解這個模式後,就不用整個把資料集都丟到session
P.S.
若是作業部分你這樣合格了,但是要再精進的話,可能要慢慢下功夫吧!
(我也是這樣慢慢爬上來的歐,不過還是菜鳥一個)!!
參考資料: me - 更改密碼Lv 51 0 年前
搜尋引擎的用法不難,您已經使用了DataGrid,分頁問題就別自己寫。
DataGrid會自己完成這部份。
ASP.NET 2.0 有好東西可用
DataGrid + SqlDataSource
您只要更換SQL指令的「日期」部份,就能完成您想要的功能囉。
sqlDataSource.CommandText = 您的SQL指令 where 日期1 < 'xxxx' .....等等
ASP這版面,以前討論過很多次了
- 您覺得這個回答如何?您可以登入為回答投票。
- JohneyLv 51 0 年前
Session() 請不要濫用喔。
Dim datashow As New DataSet
datashow = db.getDataSet(sql, cn)
Session("datashow") = datashow
您把大量的資料,放進 Session(),乍看之下很方便,但非常消耗系統資源。
如果非得使用不可,記得沒用的時後,立刻把Session()清空