2012-07-02 82 views
0

好吧,所以我一直在這個問題上坐了一段時間。尋找答案無果,以及那如果我用的是正確的關鍵字:(從父頁面訪問用戶控件中的SQLDatasource。

方案

人們需要,可以在一些曾經的網站不同的頁面中使用的搜索控制的話。所以一個建立一個用戶控件。

用戶控制的設置。(兒童)

它有幾個列表框,文本框,按鈕和的SqlDataSource。 用戶選擇或輸入的值/秒的受尊重的字段並單擊按鈕,按鈕Click事件觸發並從數據庫獲取數據並將其存儲到SQLDatasource中。這工作都很好,很棒。

父頁面設置。

這包含一個GridView,它必須顯示包含在Child中的SQLDatasource中包含的數據。

問題所在。

我不知道如何訪問要分配給GridView的SQLDatasource。

問題。

  1. 如何訪問SQLDatasource?
  2. Gridview能夠頁面嗎?
  3. 如果2是「否」,那麼使它成爲頁面的替代選項是什麼?
  4. 將SQLDatasource分配給 Gridview的最佳事件是什麼?

回答

0

看起來你會一直擁有相同的連接字符串,如果是這樣的話,只需轉到用戶控件(.ascx.cs)後面的代碼並嘗試跟隨,以綁定SqlDataSource的ASP的gridview的

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
      LoadData(); 
    } 
    private void LoadData() 
    { 
     //ConnectionStringSettingsCollection ConnctionStringCollection = ConfigurationManager.ConnectionStrings; 
     string ConnectionString = <your connection string>; 
     string SelectQuery = string.Empty; 
     //if (!HasStoredProcedure) 
     // SelectQuery = QueryOrStoredProcedure; 

      DashGridDataSource.ConnectionString = ConnectionString; 
      DashGridDataSource.SelectCommandType = SqlDataSourceCommandType.Text; 
      DashGridDataSource.SelectCommand = SelectQuery; 
      DashGridDataSource.EnableCaching = true; 
      DashGrid.DataSourceID = DashGridDataSource.ID; 
     } 
    } 

我.ascx文件看起來有些什麼如下:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DashGridWidget.ascx.cs" Inherits="*****.Widgets.DashGridDefault" %> 
<asp:SqlDataSource ID="DashGridDataSource" runat="server" EnableCaching="true" CacheDuration="300"></asp:SqlDataSource> 
<asp:GridView ID="DashGrid" runat="server" 
AllowPaging="True" AllowSorting="True" onsorting="DashGrid_Sorting"> 

您還可以添加丘斯托米屬性自定義控制.ascx.cs的開頭:

public partial class DashGridDefault : System.Web.UI.UserControl 
{ 
    public string QueryOrStoredProcedure { get; set; } 
    public bool HasStoredProcedure { get; set; } 
    public int DatabaseEnum { get; set; } 

這是我如何使用控制:

<Dashboard:IconGrid runat="server" ID="proceedings" DatabaseEnum="3" HasStoredProcedure="false" SessionVariableID="Proceeding" QueryOrStoredProcedure="SELECT TOP 100 CONTACTS FROM CUSTOMERS" /> 
+0

您好, 謝謝你的回覆。 這在我的情況下不起作用,AS在我的原始文章中聲明,用戶控件(ascx.vb)包含獲取數據的所有必要控件,父頁面(aspx.vb)包含gridview。所以SQLDatasource和Gridview位於2個不同的頁面上。 SQLDatasource位於ascx.vb中 Gridview位於aspx.vb 同樣的問題適用於原始文章。 – Hav0c

+0

我想你總是可以使用會話變量... – ablaze

相關問題