ASP.net ASCX和ASPX将数据从一个传输到另一个

时间:2011-03-24 14:18:02

标签: c# asp.net

我有这个页面,如下所示。在ASCX文件中,使用DataGrid生成数据,其中用户搜索字段并根据输入条件显示结果。这是使用存储过程和参数来执行此搜索。然后它返回结果,填充数据网格,现在我的问题是我将如何在我的ASPX页面中使用我的磁盘图标允许用户下载已在ASCX页面中返回的数据的CSV。我显然需要运行一个命令来从数据库生成CSV文件,我有所有的代码,但我的问题是我如何知道用户搜索了什么,或者我猜最好的结果是什么。这可能吗?

enter image description here

3 个答案:

答案 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.

给猫皮肤的不同方法。