【问题标题】:C# user control interact with control on parent pageC#用户控件与父页面上的控件交互
【发布时间】:2016-02-26 15:48:47
【问题描述】:

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

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

EDIT:用户与用户控件的交互触发了外部标签的更新。

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>

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我试过这个方法,但是我怎样才能得到控件本身呢?我尝试使用 this.FindControl(LabelID)this.Parent.FindControl(LabelID) 但我总是得到 null 结果。 LabelId 是一个字符串,里面有我的标签的ID,而且填的正确。
    • 您能否就您要做什么提供更多反馈,特别是如果您尝试在客户端执行此操作,或者您需要在服务器端执行此操作?
    【解决方案2】:

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

    这个函数只是简单地做了passedLabel.Text = "My Text"

    【讨论】:

      【解决方案3】:

      我通过在客户端进行更改来解决这个问题。 我在我的用户对象中做了:

      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 来使用客户端功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多