[問題] GridView對應不同使用者顯示編輯/刪除

看板Web_Design作者 (第三個…)時間14年前 (2012/02/09 17:25), 編輯推噓2(202)
留言4則, 1人參與, 最新討論串1/1
我有個頁面功能是上傳檔案,但要登入才可以上傳, 上傳後會記錄檔案是誰傳的,並且使用GridView將資料select出來。 請問這個GridView可以對應不同使用者顯示編輯跟刪除嗎? 當然,其他使用者新增的資料還是可以瀏覽,只是不能更動。 謝謝各位的回答。 -- http://www.youtube.com/watch?v=zqzVtROqPQI
お耳がぴょんぴょん♪ともちんこと板野友美です。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.138.165.229

02/09 18:37, , 1F
光用拉的沒辦法 你要在RowDataBound裡面自己處理
02/09 18:37, 1F
感謝。 請問一個問題,我的GridView明明就有資料載入。但是當我用類似 GridView1.FindControl("LinkButton1")都會出錯說GridView是null. 因為本來想說如果不是登入者的話,就把LinkButton的Visible設成 false。 ※ 編輯: TheThird 來自: 223.138.165.229 (02/09 18:57)

02/09 18:59, , 2F
你是在RowDataBound裡面做?
02/09 18:59, 2F

02/09 19:00, , 3F
那要用e.Row.FindControl()
02/09 19:00, 3F
我第一次在RowDataBound出例外,後來改到jQuery也出錯。 沒用過e.Row.FindControl(),來試試@@ ※ 編輯: TheThird 來自: 223.138.165.229 (02/09 19:04) 我用LinkButton lb = (LinkButton)e.Row.FindControl("delete"); 可以找到LinkButton,但是我用 lb.Visible = false; 就會出現「並未將物件參考設定為物件的執行個體」 描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯 誤的詳細資訊,以及在程式碼中產生的位置。 例外詳細資訊: System.NullReferenceException: 並未將物件參考設定為物件的執行個 體 這個例外Orz... 抱歉我找到問題了,要寫在if (e.Row.RowType == DataControlRowType.DataRow) 裡面。 -- 解決了。 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { LinkButton lbDel = (LinkButton)e.Row.FindControl("delete"); lbDel.Visible = false; LinkButton lbEdit = (LinkButton)e.Row.FindControl("edit"); lbEdit.Visible = false; if (Page.User.Identity.Name == e.Row.Cells[5].Text) { lbDel.Visible = true; lbEdit.Visible = true; } } } 不過不知道有無更好的方法@@ ※ 編輯: TheThird 來自: 114.136.254.13 (02/10 12:53)

02/10 17:11, , 4F
你如果要撈出來資料的值,可以用datakey
02/10 17:11, 4F

02/10 17:12, , 5F
基本上,就只能這樣做,現成的東西就只能這樣魔改
02/10 17:12, 5F
使用datakey撈資料出來是不是還是得加上if else判斷, 如果是的話,這樣魔改似乎比較節省(coding)時間,不過不知道 有沒有效能上的差異@@ 像是用datakey比較快? ※ 編輯: TheThird 來自: 114.136.254.13 (02/10 19:39)

02/10 23:14, , 6F
用datakey你不需要把東西輸出到欄位上
02/10 23:14, 6F

02/10 23:15, , 7F
而且不用數格子,不然你欄位順序一換程式又要改了
02/10 23:15, 7F
文章代碼(AID): #1FCv48ql (Web_Design)