C# 用户控件与父页面上的控件交互
C# user control interact with control on parent page
我有一个 Web 表单,其中有一个标签和一个用户控件。
我希望用户控件能够更改标签中文本的值。
我如何指示用户控制要更改的标签?
(在示例中,我有一个 Label 和一个用户控件的单个实例,但我需要两者都有)
编辑:用户与用户控件的交互触发外部标签的更新。
EDIT2:添加更多细节。
我的用户控件有一个网格视图,当用户向网格添加或编辑一行时,我想用网格列的总和更新标签中的值。
目前我正在使用代码服务器端,因为更新或插入请求会发送到服务器。
如果可能的话,我更喜欢在客户端进行更新,因为这样我就可以更新我的标签而不必重新加载整个页面。
解决方案:改为使用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>
如果您知道要控制哪个标签,您始终可以在用户控件中设置一些 属性,以保留该标签 ID。
您可以在控件中使用通用方法来设置标签的值并将该标签控件传递给函数。
函数只是做 passedLabel.Text = "My Text"
我通过在客户端进行更改解决了这个问题。
我在我的用户对象中做了:
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 来使用客户端功能。
我有一个 Web 表单,其中有一个标签和一个用户控件。 我希望用户控件能够更改标签中文本的值。
我如何指示用户控制要更改的标签? (在示例中,我有一个 Label 和一个用户控件的单个实例,但我需要两者都有)
编辑:用户与用户控件的交互触发外部标签的更新。
EDIT2:添加更多细节。 我的用户控件有一个网格视图,当用户向网格添加或编辑一行时,我想用网格列的总和更新标签中的值。 目前我正在使用代码服务器端,因为更新或插入请求会发送到服务器。 如果可能的话,我更喜欢在客户端进行更新,因为这样我就可以更新我的标签而不必重新加载整个页面。
解决方案:改为使用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>
如果您知道要控制哪个标签,您始终可以在用户控件中设置一些 属性,以保留该标签 ID。
您可以在控件中使用通用方法来设置标签的值并将该标签控件传递给函数。
函数只是做 passedLabel.Text = "My Text"
我通过在客户端进行更改解决了这个问题。 我在我的用户对象中做了:
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 来使用客户端功能。