Articles in this section
Category / Section

How to update dynamic datasource in Spreadsheet normal scroll mode

4 mins read

Description

This knowledge base explains how to update dynamic datasource in Spreadsheet normal scroll mode.

Solution

This requirement can be achieved by using updateRange() method in Button click event.

[HTML]

 

<button id="change" onclick="onChangeDatasource(this)">Change datasource</button>
<div id="Spreadsheet"></div>

 

[JS]

 

window.newDatasource = [
    { "OrderID": 10001, "CustomerID": "VINET", "Freight": 12.256, "Load": 123456, "shipdate": "4/12/2001", "Time": "11:33:56" },
    { "OrderID": 10002, "CustomerID": "TOMSP", "Freight": 23.3, "Load": 1234, "shipdate": "5/12/2010", "Time": "12:12:12" },
    { "OrderID": 10003, "CustomerID": "HANAR", "Freight": 12.256, "Load": 123456, "shipdate": "4/12/2001", "Time": "11:33:56" },
    { "OrderID": 10004, "CustomerID": "VICTE", "Freight": 23.3, "Load": 1234, "shipdate": "5/12/2010", "Time": "12:12:12" },
    { "OrderID": 10005, "CustomerID": "SUPRD", "Freight": 12.256, "Load": 123456, "shipdate": "4/12/2001", "Time": "11:33:56" },
    { "OrderID": 10006, "CustomerID": "CHOPS", "Freight": 23.3, "Load": 1234, "shipdate": "5/12/2010", "Time": "12:12:12" },
];
 
window.datasource = [{ "ProductID": 1, "ProductName": "Chai", "CategoryID": 1, "QuantityPerUnit": "10 boxes x 20 bags", "UnitPrice": "18.0000", "UnitsInStock": 39 },
    { "ProductID": 2, "ProductName": "Chang", "CategoryID": 1, "QuantityPerUnit": "24 - 12 oz bottles", "UnitPrice": "19.0000", "UnitsInStock": 17 }, { "ProductID": 3, "ProductName": "Aniseed Syrup", "CategoryID": 2, "QuantityPerUnit": "12 - 550 ml bottles", "UnitPrice": "10.0000", "UnitsInStock": 13 },
    { "ProductID": 4, "ProductName": "Chef Anton's Cajun Seasoning", "CategoryID": 2, "QuantityPerUnit": "48 - 6 oz jars", "UnitPrice": "22.0000", "UnitsInStock": 53 },
    { "ProductID": 5, "ProductName": "Chef Anton's Gumbo Mix", "CategoryID": 2, "QuantityPerUnit": "36 boxes", "UnitPrice": "21.3500", "UnitsInStock": 0 },
    { "ProductID": 6, "ProductName": "Grandma's Boysenberry Spread", "CategoryID": 2, "QuantityPerUnit": "12 - 8 oz jars", "UnitPrice": "25.0000", "UnitsInStock": 120 },
    { "ProductID": 7, "ProductName": "Uncle Bob's Organic Dried Pears", "CategoryID": 7, "QuantityPerUnit": "12 - 1 lb pkgs.", "UnitPrice": "30.0000", "UnitsInStock": 15 },
    { "ProductID": 8, "ProductName": "Northwoods Cranberry Sauce", "CategoryID": 2, "QuantityPerUnit": "12 - 12 oz jars", "UnitPrice": "40.0000", "UnitsInStock": 6 },
    { "ProductID": 9, "ProductName": "Mishi Kobe Niku", "CategoryID": 6, "QuantityPerUnit": "18 - 500 g pkgs.", "UnitPrice": "97.0000", "UnitsInStock": 29 },
    { "ProductID": 10, "ProductName": "Ikura", "CategoryID": 8, "QuantityPerUnit": "12 - 200 ml jars", "UnitPrice": "31.0000", "UnitsInStock": 31 }
];
 
$(function () {
$("#Spreadsheet").ejSpreadsheet({
    scrollSettings: {
        scrollMode: ej.Spreadsheet.scrollMode.Normal
    },
    sheets: [{
        dataSource: window.datasource
    }]
});
});
 
function onChangeDatasource(args) {
    var ssObj = $("#Spreadsheet").data("ejSpreadsheet"), sheetIdx = ssObj.getActiveSheetIndex(), sheet, newDatasource;
    //Get Datasource.
    newDatasource = window. newDatasource;
    //reset workbook.
    ssObj.blankWorkbook();
    //Update sheet and refresh it.
    sheet = ssObj.getSheet();
    ssObj.refreshContent(sheetIdx);
    //Update new datasource using range settings.
    ssObj.updateRange(sheetIdx, { dataSource: newDatasource, startCell: "A1", showHeader: true });
}

 

 

[RAZOR]

 

<button id="change" onclick="onChangeDatasource()">To Change the DataSource</button>
@(Html.EJ().Spreadsheet<object>("Spreadsheet")
           .ScrollSettings(scroll =>
               {
                  scroll.ScrollMode(SpreadsheetScrollMode.Normal);
               })
           .Sheets(sheet =>
              {
                 sheet.Datasource((IEnumerable<object>)ViewBag.Datasource). Add();
})
)
 
<script type="text/javascript">
function onChangeDatasource(args) {
    var ssObj = $("#Spreadsheet").data("ejSpreadsheet"), sheetIdx = ssObj.getActiveSheetIndex(), sheet, newDatasource;
 
    //Get Datasource.
    $.ajax({
        type: "POST",
        url: "Home/GetItemData",
        success: function (data) {
            newDatasource = JSON.parse(data);
            //reset workbook.
            ssObj.blankWorkbook();
            //Update sheet and refresh it.
            sheet = ssObj.getSheet();
            ssObj.refreshContent(sheetIdx);
            //Update new datasource using range settings.
            ssObj.updateRange(sheetIdx, { dataSource: newDatasource, startCell: "A1", showHeader: true });
        }
    })
}

 

[CONTROLLER]

 

[AcceptVerbs(HttpVerbs.Post)]
public object GetItemData()
{ 
        List<ItemDetail> lItems = new List<ItemDetail>();
        lItems.Add(new ItemDetail(){ OrderID= 10001, CustomerID= "VINET", Freight= "12.256", Load= 123456, shipdate= "4/12/2001", Time= "11:33:56" });
        lItems.Add(new ItemDetail(){ OrderID= 10002, CustomerID= "TOMSP", Freight= "23.3", Load= 1234, shipdate= "5/12/2010", Time= "12:12:12" });
        lItems.Add(new ItemDetail(){ OrderID= 10003, CustomerID= "HANAR", Freight= "12.256", Load= 123456, shipdate= "4/12/2001", Time= "11:33:56" });
        lItems.Add(new ItemDetail(){ OrderID= 10004, CustomerID= "VICTE", Freight= "23.3", Load= 1234, shipdate= "5/12/2010", Time= "12:12:12" });
        lItems.Add(new ItemDetail(){ OrderID= 10005, CustomerID= "SUPRD", Freight= "12.256", Load= 123456, shipdate= "4/12/2001", Time= "11:33:56" });
        lItems.Add(new ItemDetail() { OrderID = 10006, CustomerID = "CHOPS", Freight = "23.3", Load = 1234, shipdate = "5/12/2010", Time = "12:12:12" });
        return JsonConvert.SerializeObject(lItems);
} 
public class ItemDetail
{
    public string CustomerID { get; set; }
    public int OrderID { get; set; }
    public int Load { get; set; }
    public string Freight { get; set; }
    public string shipdate { get; set; }
    public string Time { get; set; }
}

 

[ASPX]

 

<button id="change" onclick="onChangeDatasource()">To Change the DataSource</button>
 
<ej:Spreadsheet ID="Spreadsheet" ShowRibbon="false" runat="server">
    <ScrollSettings ScrollMode="Normal" />
    <Sheets>
        <ej:Sheet ></ej:Sheet><!-- you can define datasource at server side -->
    </Sheets>
</ej:Spreadsheet>
 
<script type = "text/javascript">
       
function onChangeDatasource(args) {
    var ssObj = $("#Spreadsheet").data("ejSpreadsheet"), sheetIdx = ssObj.getActiveSheetIndex(), sheet, newDatasource;
    $.ajax({
        type: "POST",
        url: "Default.aspx/GetItemData",
        success: function (data) {
            newDatasource = JSON.parse(data);
            //reset workbook.
            ssObj.blankWorkbook();
            //Update sheet and refresh it.
            sheet = ssObj.getSheet();
            ssObj.refreshContent(sheetIdx);
            //Update new datasource using range settings.
            ssObj.updateRange(sheetIdx, { dataSource: newDatasource, startCell: "A1", showHeader: true });
        }
    })
}
</script>

 

[CS]

 

[System.Web.Services.WebMethod]
public static object GetItemData()
{
    List<ItemDetail> lItems = new List<ItemDetail>();
    lItems.Add(new ItemDetail() { OrderID = 10001, CustomerID = "VINET", Freight = "12.256", Load = 123456, shipdate = "4/12/2001", Time = "11:33:56" });
    lItems.Add(new ItemDetail() { OrderID = 10002, CustomerID = "TOMSP", Freight = "23.3", Load = 1234, shipdate = "5/12/2010", Time = "12:12:12" });
    lItems.Add(new ItemDetail() { OrderID = 10003, CustomerID = "HANAR", Freight = "12.256", Load = 123456, shipdate = "4/12/2001", Time = "11:33:56" });
    lItems.Add(new ItemDetail() { OrderID = 10004, CustomerID = "VICTE", Freight = "23.3", Load = 1234, shipdate = "5/12/2010", Time = "12:12:12" });
    lItems.Add(new ItemDetail() { OrderID = 10005, CustomerID = "SUPRD", Freight = "12.256", Load = 123456, shipdate = "4/12/2001", Time = "11:33:56" });
    lItems.Add(new ItemDetail() { OrderID = 10006, CustomerID = "CHOPS", Freight = "23.3", Load = 1234, shipdate = "5/12/2010", Time = "12:12:12" });
    return JsonConvert.SerializeObject(lItems);
}
public class ItemDetail
{
    public string CustomerID { get; set; }
    public int OrderID { get; set; }
    public int Load { get; set; }
    public string Freight { get; set; }
    public string shipdate { get; set; }
    public string Time { get; set; }
}

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied