如何在同一页面上的另一个Ascx控件中的一个Ascx控件中访问值

时间:2016-05-01 12:46:45

标签: asp.net vb.net gridview user-controls

我有一个aspx页面,其中有两个用户控件,其中一个带有网格视图,另一个带有标签,用于在登录时显示用户数据。现在我想使用一个列中的数据网格视图将显示在第二个用户控件的标签中。我怎样才能做到这一点。 gridview中的数据根据​​其安全角色为每个用户进行更改。所有输入都受到赞赏。谢谢

1 个答案:

答案 0 :(得分:0)

Gridview用户控件在拥有您需要的信息时会引发自定义事件。该事件在主页面中处理,并通过公共属性分配给UserControl,该公共属性可以访问控件中嵌入的标签文本。

的Default.aspx

包含两个用户控件的页面

<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="StackOverFlowJunkVB._Default" %>
<%@ Register Src="~/WebUserControlGridView1.ascx" TagPrefix="uc1" TagName="WebUserControlGridView1" %>
<%@ Register Src="~/WebUserControlLabel1.ascx" TagPrefix="uc1" TagName="WebUserControlLabel1" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <uc1:WebUserControlGridView1 runat="server" id="WebUserControlGridView1" />
    <uc1:WebUserControlLabel1 runat="server" id="WebUserControlLabel1" />
</asp:Content>

Default.aspx.vb

后面的代码通过GridView用户控件的引发事件将文本分配给Label用户控件

Public Class _Default
    Inherits Page

    Private Sub WebUserControlGridView1_ReallyImportantLabelTextHandler(sender As Object, e As GridViewLabelEvent) _
      Handles WebUserControlGridView1.ReallyImportantLabelTextHandler

        WebUserControlLabel1.ReallyImportLabelText = e.ImportantLabelText

    End Sub
End Class

GridView UserControl的CodeBehind

' Define a custom EventArgs class to pass some really important text
Public Class GridViewLabelEvent
    Inherits EventArgs

    Public Property ImportantLabelText As String
End Class

' The user control with a GridView
Public Class WebUserControlGridView1
    Inherits System.Web.UI.UserControl

  Public Event ReallyImportantLabelTextHandler As EventHandler(Of GridViewLabelEvent)

  Private Sub GridView1_DataBound(sender As Object, e As EventArgs) Handles GridView1.DataBound
    Dim gvle As New GridViewLabelEvent
    gvle.ImportantLabelText = "This is really important"
    RaiseEvent ReallyImportantLabelTextHandler(Me, gvle)
  End Sub
End Class

Label UserControl的CodeBehind

Public Class WebUserControlLabel1
    Inherits System.Web.UI.UserControl

    ' Property to assign Label Text
    Public Property ReallyImportLabelText As String
        Get
            Return Label1.Text
        End Get
        Set(value As String)
            Label1.Text = value
        End Set
    End Property
End Class