我有这个页面,如下所示。在ASCX文件中,使用DataGrid生成数据,其中用户搜索字段并根据输入条件显示结果。这是使用存储过程和参数来执行此搜索。然后它返回结果,填充数据网格,现在我的问题是我将如何在我的ASPX页面中使用我的磁盘图标允许用户下载已在ASCX页面中返回的数据的CSV。我显然需要运行一个命令来从数据库生成CSV文件,我有所有的代码,但我的问题是我如何知道用户搜索了什么,或者我猜最好的结果是什么。这可能吗?
答案 0 :(得分:0)
ASCX是否负责所有数据库交互?
如果是这样,它是否会将导出内容封装到CSV内部,而不需要与其父容器对话?如果是这样,你不会只是从父控件可以调用的用户控件中公开一个方法吗?
答案 1 :(得分:0)
您始终可以通过Page属性访问控件所在的页面。这样的事情可以起作用(在控制事件中):
MyPage parent = (MyPage) this.Page;
parent.SetDownloadUrl(myDownloadUrl);
其中MyPage
是您网页的类型,SetDownloadUrl设置您显示下载链接所需的任何属性。
此外,反过来也是可能的。如果下载链接保存在controls属性中,则可以使用:
MyControl control = (MyControl) FindControl("myControlName");
ImageDownload.NavigateUrl = control.DownloadUrl;
其中MyControl
是控件的类型,并且它具有已设置的DownloadUrl
属性。
答案 2 :(得分:0)
您需要做的就是通过公共功能公开搜索条件。
添加到ascx;
Public String GetSearchCriteria() {
//Code to return the search criteria here
}
在按钮点击事件中的aspx上;
String = myControl.GetSearchCriteria();
//Call database and get data for CSV
或者您可以将数据传递回aspx。同样的方法;
ASCX;
Public List<MyData> GetData() {
//Code to return the data here
}
在按钮点击事件中的aspx上;
List<MyData> myData = myControl.GetData();
//Produce CSV from data.
给猫皮肤的不同方法。