locked
Empty gridview inside AjaxControlToolkit TabPanel RRS feed

  • Question

  • User1310055179 posted

    Hi,

    I am trying to populate a grid view control inside an AjaxControlToolkit TabPanel, from DB. 

    I try to do it from code behind, however, The gridview stays empty.

    I have 2 recorded in the db and when I debug the code in Visual Studio I can see the datasource is not empty.

    What seems to be the problem?

    About.aspx:

    <%@ Page Title="Qset Commands Tutorial" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="Qset.About" %>
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
        <hgroup class="title">
            <h1><%: Title %></h1>
            <h2></h2>
        </hgroup>
     
        <article>
            <ajaxToolkit:TabContainer runat="server" Height="400px" ID="TabContainer1" 
            Width="1000px"
            ActiveTabIndex="0"        
            OnDemand="true"        
            AutoPostBack="false"
            TabStripPlacement="Top"
            ScrollBars="Auto"
            UseVerticalStripPlacement="false"
            VerticalStripWidth="120px">
                <ajaxToolkit:TabPanel runat="server" 
                    HeaderText="P"
                    Enabled="true"
                    ScrollBars="Both"       
                    OnDemandMode="Once">
                    <ContentTemplate>
                        <%--<div id="report_div">--%>
                            <asp:GridView ID="GridView1" runat="server"  style="margin-top:40px;"  
                                HeaderStyle-HorizontalAlign="Center">
                                <Columns>
     
                                </Columns>
                            </asp:GridView>
                        <%--</div>--%>
                        
                    </ContentTemplate>
                </ajaxToolkit:TabPanel>
                <ajaxToolkit:TabPanel runat="server" ID="UITab" style="position:relative;" 
                    HeaderText="S"
                    Enabled="true"
                    ScrollBars="Auto"        
                    OnDemandMode="Always">
                    <ContentTemplate>
                        
                        <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
                    </ContentTemplate>
                </ajaxToolkit:TabPanel>
        </ajaxToolkit:TabContainer>
          
        </article>
     
       
    </asp:Content>

    About.cs:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.OleDb;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
     
    namespace Qset
    {
        public partial class About : Page
        {
    
            protected void Page_Load(object sender, EventArgs e)
            {
                
                if (!IsPostBack)
                {
                    ViewState["sortOrder"] = "";
                    ViewState["sortExpression"] = "";
                    run_Grid("GridView1""""""select * from P");
                }
            }
     
            protected void run_Grid(string id, string sortExp, string sortDir, string qur)
            {//run grid according to grid id, drilldown level and sort parameters 
     
                AjaxControlToolkit.TabPanel activeTab = TabContainer1.ActiveTab;
                GridView gridCtl = (GridView)activeTab.FindControl(id);
     
                gridCtl.AutoGenerateColumns = false;
                gridCtl.GridLines = GridLines.None;
                gridCtl.CssClass = "mGrid";
                gridCtl.PagerStyle.CssClass = "pgr";
                gridCtl.HeaderStyle.CssClass = "theader";
                
     
                gridCtl.AllowPaging = false;
     
                gridCtl.AlternatingRowStyle.CssClass = "alt";
               
                gridCtl.AllowSorting = true;
                gridCtl.Font.Name = "Arial";
     
                DataSet gridDataSet = get_aDataset(qur);
     
                if (gridDataSet.Tables.Count > 0)
                {//if he table is not empty
                    string[] fieldType = new string[gridDataSet.Tables[0].Columns.Count];
                    gridCtl.DataSource = gridDataSet.Tables[0];
     
                    DataView dv = new DataView();
                    dv = gridDataSet.Tables[0].DefaultView;
                    if (sortExp != string.Empty)
                    {
                        dv.Sort = string.Format("{0} {1}", sortExp, sortDir);
                    }
                    gridCtl.DataSource = dv;
                    gridCtl.DataBind();
                }
                
            }
     
            public DataSet get_aDataset(string recStrQuery)
            {
                DataSet ds = new DataSet();
     
                using (System.Data.OleDb.OleDbConnection JETconn = new System.Data.OleDb.OleDbConnection(connstring_def))
                {
                    try
                    {
                        JETconn.Open();
                        using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(recStrQuery, JETconn))
                        {
                            dataAdapter.Fill(ds);
                        }
     
                    }
                    catch (Exception ex)
                    {
                        Qsoft_DMS.Logic.ExceptionUtility.LogException(ex, "get_aDataset: " + ex.Message + "\n" + recStrQuery);
                        ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "get_aDataset""alert(get_aDataset: Failed to connect to data source.\n" + ex.Message + ");"true);
                    }
                }
      
                return ds;
            }
        }
    }
    Wednesday, October 28, 2020 6:41 AM

Answers

  • User-1330468790 posted

    Hi qsoft_developer,

     

    Basically your codes are correct while there are two mistakes that you need to fix.

    • Remove the <Columns> tag in the below block.
     <asp:GridView ID="GridView1" runat="server"  style="margin-top:40px;"  
                                HeaderStyle-HorizontalAlign="Center">
                                <Columns>
                                </Columns>
                            </asp:GridView>
    • Remove the AutoGenerateColumns code line from code behind.
     protected void run_Grid(string id, string sortExp, string sortDir, string qur)
            {//run grid according to grid id, drilldown level and sort parameters 
    
                AjaxControlToolkit.TabPanel activeTab = TabContainer1.ActiveTab;
                GridView gridCtl = (GridView)activeTab.FindControl(id);
    
                gridCtl.AutoGenerateColumns = false;
                
    /* Delete for Clean Display */ }

      

    Please refer to below full testing codes.

    aspx:

    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    
    
         <hgroup class="title">
            <h1><%: Title %></h1>
            <h2></h2>
        </hgroup>
     
        <article>
            <ajaxToolkit:TabContainer runat="server" Height="400px" ID="TabContainer1" 
            Width="1000px"
            ActiveTabIndex="0"        
            OnDemand="true"        
            AutoPostBack="false"
            TabStripPlacement="Top"
            ScrollBars="Auto"
            UseVerticalStripPlacement="false"
            VerticalStripWidth="120px">
                <ajaxToolkit:TabPanel runat="server" 
                    HeaderText="P"
                    Enabled="true"
                    ScrollBars="Both"       
                    OnDemandMode="Once">
                    <ContentTemplate>
                       
                            <asp:GridView ID="GridView1" runat="server"  style="margin-top:40px;"  
                                HeaderStyle-HorizontalAlign="Center">
                            </asp:GridView>
                   
                        
                    </ContentTemplate>
                </ajaxToolkit:TabPanel>
                <ajaxToolkit:TabPanel runat="server" ID="UITab" style=";" 
                    HeaderText="S"
                    Enabled="true"
                    ScrollBars="Auto"        
                    OnDemandMode="Always">
                    <ContentTemplate>
                        
                        <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
                    </ContentTemplate>
                </ajaxToolkit:TabPanel>
        </ajaxToolkit:TabContainer>
          
        </article>
    </asp:Content>

    Code behind:

    // Simulation of the data
            private static DataTable _gridviewDT;
            public static DataTable GridviewDT
            {
                get
                {
                    if (_gridviewDT is null)
                    {
                        _gridviewDT = new DataTable();
    
                        _gridviewDT.Columns.Add("Id", typeof(int));
                        _gridviewDT.Columns.Add("Name", typeof(string));
    
                        _gridviewDT.Rows.Add(1, "name1");
                        _gridviewDT.Rows.Add(2, "name2");
                        _gridviewDT.Rows.Add(3, "name3");
                        _gridviewDT.Rows.Add(4, "name4");
                        _gridviewDT.Rows.Add(5, "name5");
    
                    }
    
                    return _gridviewDT;
                }
                set
                {
                    _gridviewDT = value;
                }
            }
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ViewState["sortOrder"] = "";
                    ViewState["sortExpression"] = "";
                    run_Grid("GridView1", "", "", "select * from P");
                }
            }
    
            protected void run_Grid(string id, string sortExp, string sortDir, string qur)
            {//run grid according to grid id, drilldown level and sort parameters 
    
                AjaxControlToolkit.TabPanel activeTab = TabContainer1.ActiveTab;
                GridView gridCtl = (GridView)activeTab.FindControl(id);
    
                //gridCtl.AutoGenerateColumns = false;
                gridCtl.GridLines = GridLines.None;
                gridCtl.CssClass = "mGrid";
                gridCtl.PagerStyle.CssClass = "pgr";
                gridCtl.HeaderStyle.CssClass = "theader";
    
    
                gridCtl.AllowPaging = false;
    
                gridCtl.AlternatingRowStyle.CssClass = "alt";
    
                gridCtl.AllowSorting = true;
                gridCtl.Font.Name = "Arial";
    
    
                // Simulation binding for the grid view
                gridCtl.DataSource = GridviewDT;
                gridCtl.DataBind();
    
            }

    Demo:

     

    Hope helps.

    Best regards,

    Sean

     

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, October 29, 2020 7:52 AM