我有一个网页(aspx)-购买页面,带有ascx工具栏- Export,用于导出数据( .xls或.csv)。
我需要从“采购”页面获取供应商的名称,并将该值插入ascx工具栏上导出文件的名称中。
在“采购”页面上,有一个ddl,用户可以在其中选择供应商和将显示所有数据的网格。在网格上方有一个带有导出按钮的工具栏。我需要能够抓取下拉列表中的文本并使用ExportToolbar.ascx.vb页面上的文本,这样我就可以将该文本插入到名称中。
我试图使用一个公共属性get和set方法,但它不起作用。我将如何从供应商ddl中抓取选定的文本?
发布于 2014-04-22 14:19:31
我最后做的是-
在ascx页面上我创建了一个公共财产-
Public Property SupplierSelection As String
Get
Return Convert.ToString(ViewState.Item("SupplierSelection"))
End Get
Set(ByVal value As String)
ViewState.Add("SupplierSelection", value)
End Set
End Property然后在aspx页面上我把它添加到了加载网格事件中-
SupergridToolbar1.SupplierSelection = ddlStrategy.SelectedItem.Text.ToString()然后,我能够使用ascx页面上的供应商选择。谢谢你的帮助!
发布于 2014-04-11 20:42:23
传统的想法是这样的: ascx可以托管在任何aspx页面上。因此,通常ascx访问其主机页的属性是不好的形式。对于ascx来说,拥有一个公共属性要合适得多,并且aspx会将值推入ascx (视需要而定)。
但是,如果您确实想要走这个路线,那么(ascx的.Page属性)将引用到主机页。如果将其转换为主机的(更强)类型(名称),则可以获得主机属性。如下所示:
'if your host page is called HostPage (and the class name is the same)
Dim host as HostPage = CType(me.Page, HostPage)
'now refer to the controls on the host (aspx) page
dim example as string
example = host.txtExample.Text请记住,如果您的ascx托管在几个页面上,这将导致错误。
发布于 2014-04-11 20:39:58
您可以使用此用途的事件形式。像这样定义UserControl上的事件:
Public BeforeExportEventArgs
Inherits EventArgs
Public Property FileName As String
End Class
Public Class ToolbarControl
Inherits UserControl
Public Event BeforeExport As EventHandler(Of BeforeExportEventArgs)
Public Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click
' Retrieve File Name
Dim beforeExpEventArgs As New BeforeExportEventArgs()
RaiseEvent BeforeExport(Me, beforeExpEventArgs)
' Set default filename if not provided by an event handler
If String.IsNullOrEmpty(beforeExpEventArgs.FileName) Then
beforeExpEventArgs.FileName = "DefaultFileName.csv"
End If
' Export data
End Class将事件处理程序添加到承载UserControl的窗体:
Public Class WebForm1
Inherits Page
' ...
Public Sub expToolbar_BeforeExport(sender As Object, e As BeforeExportEventArgs) Handles expToolbar.BeforeExport
e.FileName = ddlSupplier.Text + ".csv"
End Sub
' ...
End Class这样,您就可以避免UserControl和页面之间的紧密耦合。承载UserControl的页面可以设置特定的文件名,但不必设置。
https://stackoverflow.com/questions/23021806
复制相似问题