Answered by:
Empty gridview inside AjaxControlToolkit TabPanel

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