Hi. I've followed the 'Load on Demand RadPageView' demo almost to the letter except with the datasource in the web user controls which hold the RadGrid's. I have them set so that the SelectCommand is set at runtime in the code behind, because it retrieves the windows userid. The grids seem to disappear when I click on a tab. I've tried setting the OnNeedDataSource but that doesn't even seem to get fired. This doesn't happen if I have the SelectCommand in the ASCX page.
Here is my ASCX page:
And the code behind:
Here is my ASCX page:
| <%@ Control Language="C#" AutoEventWireup="true" CodeFile="PurchaseOrders.ascx.cs" |
| Inherits="workbench_PurchaseOrders" %> |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <telerik:RadGrid ID="rgPurchaseOrders" runat="server" AllowPaging="True" AllowSorting="True" |
| DataSourceID="sdsPurchaseOrders" GridLines="None" Skin="Vista" OnNeedDataSource="rgPurchaseOrders_OnNeedDataSource"> |
| <MasterTableView AutoGenerateColumns="False" DataSourceID="sdsPurchaseOrders" NoMasterRecordsText="You have no purchase orders."> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px" /> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px" /> |
| </ExpandCollapseColumn> |
| <AlternatingItemStyle BackColor="#F0F0F0" /> |
| <Columns> |
| <telerik:GridBoundColumn DataField="po_number" HeaderText="Order Number" SortExpression="po_number" |
| UniqueName="po_number"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="supplier_name" HeaderText="Supplier Name" SortExpression="supplier_name" |
| UniqueName="supplier_name"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="amount" DataType="System.Decimal" HeaderText="Amount" |
| SortExpression="amount" UniqueName="amount"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
| <asp:SqlDataSource ID="sdsPurchaseOrders" runat="server" ConnectionString="<%$ ConnectionStrings:FinprodConnectionString %>" /> |
And the code behind:
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Web; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using Telerik.Web.UI; |
| using System.Data.SqlClient; |
| using System.Data; |
| using System.Configuration; |
| using Common; |
| public partial class workbench_PurchaseOrders : System.Web.UI.UserControl |
| { |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (!Page.IsPostBack) |
| { |
| GetDataSource(); |
| } |
| } |
| public DataTable GetDataTable(string query) |
| { |
| DataTable myDataTable = new DataTable(); |
| SqlConnection myConnection = new SqlConnection(Intranet.ConString("/Default Web Site", "FinprodConnectionString")); |
| try |
| { |
| myConnection.Open(); |
| SqlDataAdapter adapter = new SqlDataAdapter(); |
| adapter.SelectCommand = new SqlCommand(query, myConnection); |
| adapter.Fill(myDataTable); |
| } |
| finally |
| { |
| myConnection.Close(); |
| } |
| return myDataTable; |
| } |
| protected void rgPurchaseOrders_OnNeedDataSource(object source, GridNeedDataSourceEventArgs e) |
| { |
| GetDataSource(); |
| } |
| void GetDataSource() |
| { |
| string userID = HttpContext.Current.User.Identity.Name.ToString().Replace("COUNCIL\\", ""); |
| string sqlStr = "SELECT PORDNBR AS po_number, SUPP_NAME AS supplier_name, PORD_TOT_INC_AMT2 AS amount FROM PUF_ORD_CTL WHERE (ORIG_AUTH_CODE = '" + userID + "') AND (PORD_STATUS = 'A' OR PORD_STATUS = 'D') ORDER BY PORDNBR"; |
| rgPurchaseOrders.DataSource = GetDataTable(sqlStr); |
| } |
| } |