好的,所以我一直坐在这个问题上一段时间了。寻找答案无济于事,好吧,如果我使用正确的关键词:(
方案
需要一个可以在一次网站的许多不同页面上使用的搜索控件。因此,构建一个用户控件。
用户控制设置。 (儿童)
它有几个列表框,文本框,按钮和SQLDatasource。 用户在所选字段中选择或输入值,然后单击按钮,按钮Click事件将触发并从DB获取数据并将其存储到SQLDatasource中。这一切都很好,花花公子。
父页面设置。
这包含一个Gridview,它必须显示Child中包含的SQLDatasource中包含的数据。
问题。
我不知道如何访问要分配给Gridview的SQLDatasource。
问题。
答案 0 :(得分: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" />