2010-10-01 79 views
0

我有一個Web用戶控件book.ascx和一個FormView內容頁:如何從web用戶控件標記值,使用母版頁

<formview runat="server" id="fv"> 
<ItemTemplate> 
<asp:Label runat="server" id="bookID" Text='<%# Eval ("bookId") %>' /> 
</ItemTemplate> 
</FormView> 

這FormView控件是數據綁定動態。 現在我有一個內容頁面Default.aspx的:

<%@ Register src="Book.ascx" tagname="Book" tagprefix="uc1" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
<uc1:Book id="book1" runat="server"/> 
<asp:Label runat="server" id="lblBookId" /> 
</asp:Content> 

我想從web用戶控件的標籤的價值得到一個Default.aspx頁面。 什麼是解決此問題的最佳方法。 謝謝。

回答

0

你想通過javascript在客戶端獲取它?

getElementById('<%=lblBookId.ClientID%>') 

我還建議讓firefox的firebug,然後你可以看看生成的網頁的HTML。你也可以一步一步來調試你的javascript。

如果試圖在服務器端找到這個,試試這個。

ContentPlaceHolder ph = Page.Master.FindControl("ContentPlaceHolder1"); 
UserControl Uc = ph.Controls(0); 
FormView fv = up.FindControl("fv"); 
Label label = fv.FindControl("lblBookId"); 
label.Text = "Hi there"; 

如果這不起作用,你可以得到想法。繼續鑽探直到找到你要找的東西。

+0

沒有吉姆我不想從JavaScript獲得,而是我想從Default.aspx.cs的客戶端代碼。 – sacrament 2010-10-01 18:02:24

+0

然後你想要jonnyblaze的答案。 – jim 2010-10-01 18:05:46

+0

是的,但我無法管理它從內容頁面中的web用戶控件中找到標籤。 – sacrament 2010-10-01 18:14:33

2

從後面在Default.aspx.cs代碼:

protected void fv_OnDataBound(object sender, EventArgs e) 
{ 
    Label fvLabel = (Label)fv.FindControl("bookID"); 
    lblBookId.Text = fvLabel.Text; 
} 
+0

謝謝喬恩,但formview它綁定在控件中,我沒有綁定在default.aspx中。 – sacrament 2010-10-01 17:52:57

+0

它應該像嘗試從內容頁面引用MasterPage控件一樣工作。嘗試在Default.aspx.cs中使用這兩行代碼,看看它是否適用於您。標籤fvLabel =(標籤)fv.FindControl(「bookID」); lblBookId.Text = fvLabel.Text; – jon3laze 2010-10-01 18:02:18

+0

我試過但仍然是同樣的問題對象引用未設置爲對象的實例。 – sacrament 2010-10-01 18:08:47

0

我猜的方式來實現你想要的是讓這本書控制火災的事件它知道後的值是什麼。

您現在需要從頁面訪問控件內的值。這可以通過通過屬性暴露值來實現,或者您可以創建自己的EventArgs並引發事件。

public class StringEventArgs:EventArgs 
{ 
    public String Value {get; private set;} 
    public StringEventArgs(String val){ this.Value = val; } 
} 
+0

我喜歡你的解決方案,但我認爲聖禮稍微比你的回答要小一些。也許走完設置活動的整個過程,然後訂閱它,我會讚揚你......地獄,我會告訴我的朋友們,讓你喜歡,週六晚上我會舉行Upvote citronas派對。 :) – jim 2010-10-01 18:41:48

+0

我現在有點不夠時間,但也許我會在今晚編輯這個答案,以獲得upvote和你的派對的投票;) – citronas 2010-10-01 18:56:25

+0

我要去啤酒和芯片運行,我會過一會再來檢查。 – jim 2010-10-01 19:00:10