2011-03-24 117 views
0

我有這個頁面,如下所示。在ASCX文件中,數據是使用DataGrid生成的,用戶在其中搜索字段並根據輸入條件顯示結果。這是使用存儲過程和參數來執行此搜索。然後它返回結果,填充數據網格,現在我的問題是如何在ASPX頁面中進行操作,讓我的磁盤圖標允許用戶下載已在ASCX頁面中返回的數據的CSV。我顯然需要運行一個命令來從數據庫中生成CSV文件,我擁有所有代碼,但我的問題實際上是如何知道用戶搜索的內容,或者我認爲最好的結果。這可能嗎?ASP.net ASCX和ASPX將數據從一個傳輸到另一個

enter image description here

回答

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. 

皮膚不同的方式貓。

0

是否ASCX採取所有的數據庫交互的照顧?

如果是這樣,是不是它會將導出內容封裝在CSV本身內部,而無需與其父容器進行通信?如果是這樣,你會不會暴露父母可以調用的用戶控件的方法?

+0

是的ASCX處理所有事情,ASPX只是結合了幾個ASCX文件,並提供了一些樣式,使它看起來不錯。我如何去暴露用戶控件上的方法,以便aspx可以調用它? – atrljoe 2011-03-24 14:25:49

+0

1)向用戶控件添加一個新的公共函數,然後2)設置圖標的onclick來調用this.usercontrol.exportfunc()。 – 2011-03-24 14:29:25

0

您可以隨時通過Page屬性訪問控件所在的頁面。像這樣的東西可以工作(在控制的事件):

MyPage parent = (MyPage) this.Page; 
parent.SetDownloadUrl(myDownloadUrl); 

其中MyPage是你網頁的你,以顯示下載鏈接需要的任何性質的類型,和SetDownloadUrl套。


另外,反過來也是可能的。如果下載鏈接被保存在一個控件屬性,你可以使用:

MyControl control = (MyControl) FindControl("myControlName"); 
ImageDownload.NavigateUrl = control.DownloadUrl; 

其中MyControl是控件的類型,它具有已設置一個DownloadUrl屬性。

相關問題