[問題] 搜尋後 跳轉下一頁

看板C_Sharp作者 (幹!!研究所了不起喔!!)時間12年前 (2012/04/16 13:24), 編輯推噓2(2014)
留言16則, 2人參與, 最新討論串1/1
cs檔 protected void BtnSearch_Click(object sender, EventArgs e) { using(IntraDB DB = new IntraDB()) { using(IDataReader dr =DB.ClientInfoSearch(1, txtSearch.Text)) { gdvSearch.DataSource = dr; gdvSearch.DataBind(); } } } aspx檔 <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# String.Format ("a1.aspx?CID={0}", Eval("CID"))%>' ><%#Eval("BusinessName")%></asp:HyperLink> 原本寫的功能是search頁面搜尋會員資料 搜尋出來的會員資料放到gridview 每個會員會形成一個超連結 點下去 會跳到修改資料的頁面 並且把有的資料帶過去 然後我現在要寫的是 如果搜尋出來的資料只有1筆 就不會出現連結 而會直接跳到修改的頁面 並且原有的資料也會帶過去 請問一下要怎麼寫 我想了很久 網路也有查 不過就是寫不出來 謝謝各位了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.80.253.185

04/16 20:44, , 1F
那就在後端進行判斷 但是Datareader是無法取得資料數
04/16 20:44, 1F

04/16 20:45, , 2F
如果你是用gridview建議就用datatable比較適合吧
04/16 20:45, 2F

04/16 20:46, , 3F
DataTable.Rows.Count 可以取得資料列數目
04/16 20:46, 3F

04/16 20:46, , 4F
>1 就導向修改頁面 導向方式有很多種
04/16 20:46, 4F

04/16 20:47, , 5F
看你的需求 可以用javascript導 也可用Response的
04/16 20:47, 5F

04/16 20:47, , 6F
帶資料也有很多種 Cookie 或Session 或Url Parameter
04/16 20:47, 6F

04/16 20:47, , 7F
記得編碼(中文字) 跟 安全性的問題囉
04/16 20:47, 7F
後來修改成下面那樣 不過會出現 Invalid Attempt To Call MetaData When Reader Is Closed 不知道是哪邊有問題?? DataTable dt = new DataTable(); using(IntraDB DB = new IntraDB()) { using(IDataReader dr =DB.ClientInfoSearch(1, txtSearch.Text)) { dt.Load(dr); if (dt.Rows.Count == 1) { Response.Redirect("ClientsModify.aspx?CID="+dr["CID"].ToString()); 這句出現Invalid attempt to call MetaData when reader is closed. gdvSearch.DataSource = dt; gdvSearch.DataBind(); } else { gdvSearch.DataSource = dt; gdvSearch.DataBind(); } ※ 編輯: KSCIECS 來自: 219.80.253.185 (04/17 12:00)

04/17 21:07, , 8F
哦 執行順序的問題
04/17 21:07, 8F

04/17 21:07, , 9F
在用Response.Redirect這種導向的時候要注意
04/17 21:07, 9F

04/17 21:08, , 10F
他之後的程式碼都會失效 因為他是"直接轉向"
04/17 21:08, 10F

04/17 21:08, , 11F
那個錯誤是說 你的datareader 的連接被關掉了
04/17 21:08, 11F

04/17 21:09, , 12F
所以dr["CID"]會跑error出來 兇手就是redirect把他斷了
04/17 21:09, 12F

04/17 21:10, , 13F
建議可以改成註冊javascript到前端 導向會比較好
04/17 21:10, 13F

04/18 10:48, , 14F
dt.Load(dr)之後就把dr關了啊,你為什麼不從dt讀要從dr讀?
04/18 10:48, 14F

04/18 10:50, , 15F
改成dt.Rows[0]["CID"]就可以了吧?
04/18 10:50, 15F

04/18 10:50, , 16F
還有都redirect了下面兩行bind沒用了吧
04/18 10:50, 16F
文章代碼(AID): #1FYwp-in (C_Sharp)