2012-03-30 51 views
1

我正在構建一個可以下載歌曲的GridView。因此,我使用超鏈接fileld並使用DateNavigateUrlFormatString來使用如何動態設置DataNavigateUrlFormatString?或如何在網頁上評估Page.User.Identity.Name?

E.G.

DataNavigateUrlFormatString="~/uploads/{0}" 

現在,

我需要Page.User.Identity.Name結合成DateNavigateUrlFormatString

例如,

DataNavigateUrlFormatString="~/uploads/UserName/{0}" which Page.User.Identity.Name depending on the user login. 

我試圖從代碼中訪問DataNavigateUrlFormatString後面,但我不能。 我試圖使用eval如

 '~/uploads/" <%# Eval("Page.User.Identity.Name") %> /{0}' 

,這並不正常工作。

希望有人能指出我。

謝謝,

大號

最終溶液

 <asp:TemplateField HeaderText="Play"> 
       <ItemTemplate> 
        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl = '<%# String.Format("~/UserUploads/{0}/",Page.User.Identity.Name)+ "/" + Eval("Song_Name") %>' Text="Play" > 
        </asp:HyperLink> 

       </ItemTemplate> 
      </asp:TemplateField> 
+0

您應該添加你的「最終解決方案」作爲回答,並接受它,而不是從scartag – Rich 2012-07-09 14:12:39

+0

錯了一個@Rich你沒看過這表明我們我的回答後,有對話的意見?我的答案導致了最終的解決方案。如果你閱讀他的問題,你會意識到他沒有詳細解釋,但我的回答能夠指導他最終的解決方案。儘管我會編輯我的答案以包含他的解決方案。無論誰來這裏看,都清楚。 – scartag 2012-07-10 00:39:32

+0

我認爲,在Stackoverflow上,你的意思是編輯你的答案是正確的,所以這個問題很容易被新手閱讀,而不是保留不正確的答案和評論鏈。也許你應該編輯你的答案看起來像「最終解決方案」,而不是勞倫斯添加第二個答案?如果那是你擔心的事情,那會保留你的代表。 – Rich 2012-07-11 09:20:26

回答

0

DataNavigateUrlFormatString預計佔位符(多個)來自字段在控制的數據源。

我的建議是,既然你已經知道你正在建立的網址,你可以設置超鏈接控制的NavigateUrl屬性。

NavigateUrl = '<%# String.Format("~/UserUploads/{0}/",Page.User.Identity.Name)+ "/" + Eval("Song_Name") %>' 
+0

我得到這個錯誤,當我試圖把..我使用HyperLinkField ..任何想法?解析器錯誤消息:數據綁定表達式僅在具有DataBinding事件的對象上受支持。 System.Web.UI.WebControls.HyperLinkField沒有DataBinding事件。 – lawphotog 2012-03-30 23:37:16

+0

@Laurence Nyein你可以將它更改爲TemplateColumn並添加一個LinkBut​​ton?這會很有效,因爲它有一個數據綁定事件,而且這個代碼很容易處理它。 – scartag 2012-03-30 23:43:18

+0

對,現在我改變了HyperLink控制..它不會給我解析器錯誤了。但是,URL變成/ uploads/UserName/MrABC而不是/uploads/MrABC/a.mp3。第二個是正確的。有什麼想法嗎? – lawphotog 2012-03-30 23:44:34