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() 的話。那還有什麼方法嗎?

這是目前我會的方式!

2 個已更新項目:

Dim datashow As New DataSet

GridView1.PageIndex = e.NewPageIndex

datashow = Session("datashow")

GridView1.DataSource = datashow

GridView1.DataBind()

3 個已更新項目:

上面這是我換頁的寫法!

如果把下面的Session("datashow") = datashow這句拿掉呀!

換成就只會跑出第一頁,第二頁就看不到了!

4 個已更新項目:

如果要Close掉的話那要怎麼寫呀!

不太了解意思!

5 個已更新項目:

因為這個東西只是拿來看!

有多少人數加入網站裡!所以前輩才叫我這樣子寫的吧!

6 個已更新項目:

我這個是有做分頁啦!

一頁顯示16筆資料。

3.如何知道我現在在第幾頁?

這個我就不了解你的意思了?

是說我目前選到第幾頁嗎?

5 個解答

評分
  • 1 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
  • 1 0 年前

    您的問題,可以參考我的網頁,裡面有一篇文章,是「進階版的搜尋引擎」。這篇文章應該能解決您的一些問題。

    來的太晚,來不及回答

    http://www.taconet.com.tw/mis2000_aspnet/

  • 1 0 年前

    搜尋引擎的用法不難,您已經使用了DataGrid,分頁問題就別自己寫。

    DataGrid會自己完成這部份。

    ASP.NET 2.0 有好東西可用

    DataGrid + SqlDataSource

    您只要更換SQL指令的「日期」部份,就能完成您想要的功能囉。

    sqlDataSource.CommandText = 您的SQL指令 where 日期1 < 'xxxx' .....等等

    ASP這版面,以前討論過很多次了

  • 1 0 年前

    Session可以用啦

    但不用來存放大量的data

  • 您覺得這個回答如何?您可以登入為回答投票。
  • Johney
    Lv 5
    1 0 年前

    Session() 請不要濫用喔。

    Dim datashow As New DataSet

    datashow = db.getDataSet(sql, cn)

    Session("datashow") = datashow

    您把大量的資料,放進 Session(),乍看之下很方便,但非常消耗系統資源。

    如果非得使用不可,記得沒用的時後,立刻把Session()清空

還有問題?馬上發問,尋求解答。