How to use GridPanel with DataTable

  1. #1

    How to use GridPanel with DataTable

    Hi,

    I am new guy for Ext.Net. I use C# for a while. When I see Ext.Net Library....oh..It is so amazing~~!!!!

    But, I have some question about using GridPanel.

    OK. First..My Code is below:

    public void btnQueryClick(object sender, DirectEventArgs e)
    {
        var store = inventoryQuery.GetStore();
        store.DataSource = this.GetInventorytbl();
        store.DataBind();
                
    }
    
    private DataTable GetInventorytbl()
    {
        DbCommand sql = InventoryQueryDbCommands.SelectInventory;
        sql.Parameters.Add("MaterialCode", DbType.String).Value = txtMaterialCode.Text.Trim();
        DataTable tbl = sql.FillTable();
        if (tbl == null || tbl.Rows.Count == 0)
            return null;
    
        return tbl;
    }
    My GridPanel cannot display anything.

    Is this line "store.DataSource = this.GetInventorytbl(); " occurs error??? Should I make convertion from datatable type to datasource-accepted type ?

    Thanks a lot.
    Last edited by geoffrey.mcgill; Feb 05, 2012 at 11:52 PM. Reason: please use [CODE] tags
  2. #2
    Hello and welcome to Ext.NET!

    The following sample demonstrates using a DataTable with a Store and GridPanel, see

    https://examples1.ext.net/#/GridPane...ata/DataTable/

    Hope this helps.
    Geoffrey McGill
    Founder
  3. #3
    Quote Originally Posted by geoffrey.mcgill View Post
    Hello and welcome to Ext.NET!

    The following sample demonstrates using a DataTable with a Store and GridPanel, see

    https://examples1.ext.net/#/GridPane...ata/DataTable/

    Hope this helps.
    Hi,

    You reply this post so fast !!!!

    From this example you post, Datatable can be assigned to Datasource directly and my code does the same.
    Environment Settings:
    My Browser: IE8, Chrome and Firefox
    Ext.Net Version:1.2

    But GridPanel still display nothing. I post my aspx code as below:
     
    <!--  Aspx Code-->
    
    <ext:store ID ="InventoryQueryStore" runat="server" OnRefreshData="RefreshData"  >
                <Reader>
                    <ext:JsonReader>
                        <Fields>
                            <ext:RecordField Name = "HospitalCode"  Type="String" />
                            <ext:RecordField Name = "MaterialCode" Type="String"/>
                            <ext:RecordField Name = "MaterialCName" Type="String"/>
                            <ext:RecordField Name = "MaterialMSpec" Type="String"/>
                            <ext:RecordField Name = "NowQty" Type="Int"/>
                            <ext:RecordField Name = "SafeDays"  Type="Int"/>
                            <ext:RecordField Name = "SafeQty"  Type="Int"/>
                            <ext:RecordField Name = "AverageMonthUse"  Type="Int"/> 
                        </Fields>                    
                    </ext:JsonReader>
                </Reader>
            </ext:store>
    
    
    ext:GridPanel ID="inventoryQuery" runat="server" StoreID="InventoryQueryStore" StripeRows="true" Title = "QueryResult" 
    TrackMouseOver="true"  Height="500px" Width="500" AutoExpandColumn="HospitalCode">
        <ColumnModel>
           <Columns>
             <ext:Column ColumnID="HospitalCode" Header="Stockroom" Width="5%" DataIndex="HospitalCode" Align="Center"   />
             <ext:Column ColumnID="MaterialCode" Header="MaterialCode" Width="15%" DataIndex="MaterialCode" Align="Center" />
             <ext:Column ColumnID="MaterialCName" Header="MaterialCName" Width="20%" DataIndex="MaterialCName" Align="Center" />
             <ext:Column ColumnID="MaterialMSpec" Header="MaterialMSpec" Width="20%" DataIndex="MaterialMSpec" Align="Center" />
             <ext:Column ColumnID="NowQty" Header="NowQty" Width="10%" DataIndex="NowQty"  Align="Center"/>
             <ext:Column ColumnID="SafeDays" Header="SafeDays" Width="10%" DataIndex="SafeDays" Align="Center" />
             <ext:Column ColumnID="SafeQty" Header="SafeQty" Width="10%" DataIndex="SafeQty"  Align="Center"/>
             <ext:Column ColumnID="AverageMonthUse" Header="AverageMonthUse" Width="10%" DataIndex="AverageMonthUse"  Align="Center"/>
           </Columns>
         </ColumnModel>
         <BottomBar>
             <ext:PagingToolbar ID="PagingToolbar1" runat="server" PageSize="20" StoreID="InventoryQueryStore" />
         </BottomBar>
     </ext:GridPanel>
    Thanks for your reply.
    Last edited by kkp0633; Feb 06, 2012 at 1:53 AM.
  4. #4
    Quote Originally Posted by kkp0633 View Post
    Hi,

    You reply this post so fast !!!!

    From this example you post, Datatable can be assigned to Datasource directly and my code does the same.
    Environment Settings:
    My Browser: IE8, Chrome and Firefox
    Ext.Net Version:1.2

    But GridPanel still display nothing. I post my aspx code as below:
     
    <!--  Aspx Code-->
    
    <ext:store ID ="InventoryQueryStore" runat="server" OnRefreshData="RefreshData"  >
                <Reader>
                    <ext:JsonReader>
                        <Fields>
                            <ext:RecordField Name = "HospitalCode"  Type="String" />
                            <ext:RecordField Name = "MaterialCode" Type="String"/>
                            <ext:RecordField Name = "MaterialCName" Type="String"/>
                            <ext:RecordField Name = "MaterialMSpec" Type="String"/>
                            <ext:RecordField Name = "NowQty" Type="Int"/>
                            <ext:RecordField Name = "SafeDays"  Type="Int"/>
                            <ext:RecordField Name = "SafeQty"  Type="Int"/>
                            <ext:RecordField Name = "AverageMonthUse"  Type="Int"/> 
                        </Fields>                    
                    </ext:JsonReader>
                </Reader>
            </ext:store>
    
    
    ext:GridPanel ID="inventoryQuery" runat="server" StoreID="InventoryQueryStore" StripeRows="true" Title = "QueryResult" 
    TrackMouseOver="true"  Height="500px" Width="500" AutoExpandColumn="HospitalCode">
        <ColumnModel>
           <Columns>
             <ext:Column ColumnID="HospitalCode" Header="Stockroom" Width="5%" DataIndex="HospitalCode" Align="Center"   />
             <ext:Column ColumnID="MaterialCode" Header="MaterialCode" Width="15%" DataIndex="MaterialCode" Align="Center" />
             <ext:Column ColumnID="MaterialCName" Header="MaterialCName" Width="20%" DataIndex="MaterialCName" Align="Center" />
             <ext:Column ColumnID="MaterialMSpec" Header="MaterialMSpec" Width="20%" DataIndex="MaterialMSpec" Align="Center" />
             <ext:Column ColumnID="NowQty" Header="NowQty" Width="10%" DataIndex="NowQty"  Align="Center"/>
             <ext:Column ColumnID="SafeDays" Header="SafeDays" Width="10%" DataIndex="SafeDays" Align="Center" />
             <ext:Column ColumnID="SafeQty" Header="SafeQty" Width="10%" DataIndex="SafeQty"  Align="Center"/>
             <ext:Column ColumnID="AverageMonthUse" Header="AverageMonthUse" Width="10%" DataIndex="AverageMonthUse"  Align="Center"/>
           </Columns>
         </ColumnModel>
         <BottomBar>
             <ext:PagingToolbar ID="PagingToolbar1" runat="server" PageSize="20" StoreID="InventoryQueryStore" />
         </BottomBar>
     </ext:GridPanel>
    Thanks for your reply.
    I solved my question asked. I reallize the data type is the cause that make something wrong.

    I change Data Type and test fine!! Code is as below :
    private DataTable GenIventoryList()
    		{
    			DataTable targettbl = new DataTable();
    			DataTable sourcetbl = GetInventorytbl();
    			targettbl.Columns.AddRange(new DataColumn[] {
    					new DataColumn("StockRoom") {ColumnName="StockRoom", DataType=typeof(string)},					
    					new DataColumn("MaterialCode") {ColumnName="MaterialCode", DataType=typeof(string)},
    					new DataColumn("MaterialCName") {ColumnName="MaterialCName", DataType=typeof(string)},
    					new DataColumn("MaterialMSpec") {ColumnName="MaterialMSpec", DataType=typeof(string)},
    					new DataColumn("StockPresentQty") {ColumnName="StockPresentQty", DataType=typeof(int)},
    					new DataColumn("SafetyDays") {ColumnName="SafetyDays", DataType=typeof(int)},
    					new DataColumn("SafetyQty") {ColumnName="SafetyQty", DataType=typeof(int)},
    					new DataColumn("MonthUsageQty") {ColumnName="MonthUsageQty", DataType=typeof(int)},
    					new DataColumn("AutoTransQty") {ColumnName="AutoTransQty", DataType=typeof(int)}
    					}
    				);
    			foreach (DataRow row in sourcetbl.Rows)
    			{
    				DataRow targetrow = targettbl.NewRow();
    				targetrow["StockRoom"] = row["StockRoom"].ToString();
    				targetrow["MaterialCode"] = row["MaterialCode"].ToString();
    				targetrow["MaterialCName"] = row["MaterialCName"].ToString();
    				targetrow["MaterialMSpec"] = row["MaterialMSpec"].ToString();
    				targetrow["StockPresentQty"] = row["StockPresentQty"] is DBNull ? 0 : Convert.ToDecimal(row["StockPresentQty"]);
    				targetrow["SafetyDays"] = row["SafetyDays"] is DBNull ? 0 : Convert.ToDecimal(row["SafetyDays"]);
    				targetrow["SafetyQty"] = row["SafetyQty"] is DBNull ? 0 : Convert.ToDecimal(row["SafetyQty"]);
    				targetrow["MonthUsageQty"] = row["MonthUsageQty"] is DBNull ? 0 : Convert.ToDecimal(row["MonthUsageQty"]);
    				targetrow["AutoTransQty"] = row["AutoTransQty"] is DBNull ? 0 : Convert.ToDecimal(row["AutoTransQty"]);
    
    				targettbl.Rows.Add(targetrow);
    
    			}
    			return targettbl;
    		}
    PS. Some Columns are different from original post, but all I want to demo is the algorithm, not detail. I don't know this is good method or not.
    Anyway, I solve the question....Orz...
    IF YOU HAVE BETTER SOLUTION, PLEASE LET ME KNOW. YHANK YOU VERY ... VERY MUCH
  5. #5
    Your solution looks correct.

Similar Threads

  1. Replies: 3
    Last Post: Apr 11, 2012, 1:56 AM
  2. Save Gridpanel to DataTable
    By mkshields9w57 in forum 1.x Help
    Replies: 0
    Last Post: Jun 28, 2011, 8:53 PM
  3. GridPanel show Only Last Row of the Datatable.
    By grmontero in forum 1.x Help
    Replies: 1
    Last Post: Jun 10, 2009, 4:25 PM
  4. Replies: 0
    Last Post: Mar 17, 2009, 5:42 PM
  5. GridPanel with DataTable?
    By MrMp3 in forum 1.x Help
    Replies: 2
    Last Post: Oct 03, 2008, 4:59 PM

Posting Permissions