C#用户控件与父页面上的控件进行交互

时间:2016-02-26 15:48:47

标签: c# asp.net webforms user-controls

我有一个Web表单,我有一个Label和一个用户控件。 我希望用户控件能够更改Label中文本的值。

如何向用户控制指示要更改的标签? (在示例中,我有一个标签,一个用户控件的单个实例,但我需要有几个)

编辑:用户与用户控件的交互会触发外部标签的更新。

EDIT2:添加更多细节。 我的用户控件有一个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>

3 个答案:

答案 0 :(得分:0)

如果您知道要控制哪个标签,则可以在用户控件中始终拥有一些属性,从而保留该标签ID。

答案 1 :(得分:0)

您可以在控件中使用通用方法来设置标签的值,并将该标签控件传递给该函数。

该函数只是传递了Label.Text =“我的文字”

答案 2 :(得分: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来使用客户端功能。