2016-02-26 89 views
0

我有一個Web表單,我有一個標籤和一個用戶控件。 我希望用戶控件能夠更改標籤中文本的值。C#用戶控件在父頁面上與控件交互

如何向用戶控件指示要更改哪個標籤? (在這個例子中,我有一個標籤是用戶控件的單個實例,但我需要有兩個)。編輯:用戶與用戶控件的交互觸發外部標籤的更新。

編輯2:添加更多細節。 我的用戶控件有一個gridview,當用戶添加或編輯一個線到網格時,我想用網格上一列的總和更新標籤中的值。 當前我正在使用代碼服務器端,因爲請求更新或插入到服務器。 如果可能,我寧願在客戶端進行更新,因爲這樣可以更新我的標籤,而無需重新加載整個頁面。

解決方案:更改爲使用devexpress組件,我在用戶對象中使用aspxgridview客戶端事件EndCallback。我在我的用戶對象中定義了一個屬性來存儲要在EndCallback回調中調用的javascript函數。 該屬性可以由容器頁面填充,因爲我知道所有需要的ID。

我的代碼是:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <uc1:InvoiceItems runat="server" ID="InvoiceItems" /> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </div> 
    </form> 
</body> 
</html> 

回答

0

如果你知道哪個標籤你想控制,你可以隨時在用戶的控制,這使該標籤ID某些屬性。

+0

我試過這種方法,但我怎麼能得到控制本身?我嘗試使用'this.FindControl(LabelID)'或'this.Parent.FindControl(LabelID)',但我總是得到空結果。 LabelId是一個帶有我的標籤ID的字符串,並且它已正確填充。 – berserck

+0

對於你想要做什麼,你能提供一些更多的反饋意見,特別是如果你正在客戶端嘗試這樣做,或者你需要在服務器端做到這一點? – F34R

0

您可以在控件中使用通用方法來設置標籤的值並將該標籤控件傳遞給函數。

功能來說確實passedLabel.Text =「我的文本」

0

我做的客戶端修改解決了這個。 我在用戶對象我所做的:

public String ClientCallback { get; set; } 
private void Page_Init(object sender, EventArgs e) 
    { 
     GridView.ClientSideEvents.EndCallback = ClientCallback; 
    } 

在網頁上,我有:

<dr:UserObject runat="server" ID="UserObject1" 
ClientCallback="UpdateFeesTotal" /> 

功能UpdateFeesTotal是一個JavaScript函數,更新的標籤,現在還使用ASPxLabel使用客戶端側面功能。