Reproduced. I investigated why it happens. It might be required for the printing functionality.
Okay, I took
Ext.net.GridPrinter.convertData
as a base and adjusted it to the requirement.
Example
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
Store store = this.GridPanel1.GetStore();
store.DataSource = new object[]
{
new object[] { "test11", "test21" },
new object[] { "test12", "test22" },
new object[] { "test13", "test23" }
};
}
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Ext.NET v3 Example</title>
<script>
var getGridPanelData = function (grid, config) {
var data = [],
columns = grid.headerCt.getGridColumns(),
config = config || {};
Ext.each(config.currentPageOnly ? grid.store.getRange() : grid.store.getAllRange(), function (record, index) {
var item = {},
i, len, c, meta, value;
for (i = 0, len = columns.length; i < len; i++) {
c = columns[i];
if (c.dataIndex) {
value = record.data[c.dataIndex];
meta = { tdCls: "", tdAttr: "", style: "" };
value = c.renderer ? c.renderer.call(c, value, meta, record, index, i, grid.store, grid.view) : value;
item[c.dataIndex] = value;
} else if (c.isXType("rownumberer")) {
meta = { tdCls: "", tdAttr: "", style: "" };
item[Ext.String.createVarName(c.id)] = c.renderer.call(c, null, meta, record, index, i, grid.store, grid.view); //index + 1;
} else if (column.isXType("templatecolumn")) {
value = c.tpl ? c.tpl.apply(record.data) : value;
item[Ext.String.createVarName(c.id)] = value;
}
}
item.__internalId = record.internalId;
data.push(item);
});
return data;
};
var onButtonClick = function() {
console.log(getGridPanelData(App.GridPanel1));
};
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:Button runat="server" Text="Get data" Handler="onButtonClick" />
<ext:GridPanel ID="GridPanel1" runat="server">
<Store>
<ext:Store runat="server">
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="test1" />
<ext:ModelField Name="test-2" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column runat="server" Text="Test 1" DataIndex="test1" />
<ext:Column runat="server" Text="Test 2" DataIndex="test-2" />
</Columns>
</ColumnModel>
</ext:GridPanel>
</form>
</body>
</html>