0

好的,所以我已经坐在这个问题上一段时间了。搜索答案无济于事,也就是说我是否使用了正确的关键字:(

设想

一个人需要一个可以在一个网站的多个不同页面上使用的搜索控件。因此,构建了一个用户控件。

用户控制设置。(孩子)

它有几个列表框、文本框、一个按钮和 SQLDatasource。用户在相关字段中选择或输入值并单击按钮,按钮 Click 事件触发并从 DB 获取数据并将其存储到 SQLDatasource 中。这一切都很好,花花公子。

父页面设置。

这包含一个 Gridview,它必须显示包含在 Child 中的 SQLDatasource 中包含的数据。

问题。

我不知道如何访问要分配给 Gridview 的 SQLDatasource。

问题。

  1. 如何访问 SQLDatasource ?
  2. Gridview 可以分页吗?
  3. 如果 2 是“否”,那么另一种选择是什么?
  4. 将 SQLDatasource 分配给 Gridview 的最佳事件是什么?
4

1 回答 1

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" />
于 2012-11-13T14:24:17.420 回答