Feb 11, 2016, 11:12 AM
[CLOSED] dynamic columns to gridpanel not showing up
I have a gridpanel which has few columns added in the html markup and one column added dynamically, but the dynamic column does not show up.
Please guide me what's wrong I am doing here:
View code:
JS Code
Please guide me what's wrong I am doing here:
View code:
X.FormPanel().DefaultButton("btnTestDynamic").Layout(LayoutType.HBox)
.Buttons(
X.Button().ID("btnTestDynamic").Text("Add").Listeners(l => { l.Click.Handler = "Add()"; }),
).ButtonAlign(Alignment.Center),
X.GridPanel().Layout(LayoutType.Fit).ID("testGrid")
.Store
(
X.Store().ID("testStore")
.AutoLoad(false)
.Model
(
X.Model()
.Fields
(
new ModelField("Id"),
new ModelField("JoiningDate", ModelFieldType.Date)
)
)
)
.ColumnModel
(
X.Column().Text("Id").DataIndex("Id").Hidden(true),
X.Column().Text("Joining Date").DataIndex("JoiningDate")
)
.View(X.GridView().StripeRows(true).TrackOver(true))
.SelectionModel(X.RowSelectionModel().Mode(SelectionMode.Single))
JS Code
function Add()
{
Ext.net.Mask.show({ msg: 'Loading data..});
$.ajax({
url: "/Home/AddGridColumn",
data: JSON.stringify({ testData: selectedValues }),
async: false,
type: "POST",
contentType: 'application/json',
success: function (result) {
Ext.net.Mask.hide();
App.testGrid.getStore().loadData(result.result);
App.testGrid.getView().refresh();
}
});
}
CodeBehind:public ActionResult AddGridColumn(string[] testData)
{
using (var uow = _uow.Create())
{
var finalData = GetJoinees(testData);
if (finalData .Count() > 0)
{
DataTable myDt = ConverDataToDatatable(finalData);
GridPanel grid = X.GetCmp<GridPanel>("testGrid");
Store store = X.GetCmp<Store>("testStore");
foreach (DataRow row in myDt.Rows)
{
for (int j = 0; j < myDt.Columns.Count; j++)
{
if (myDt.Columns[j].ColumnName == "UserDetail")
{
string[] splitColData = row[myDt.Columns[j].ColumnName].ToString().Split('_');
if (splitColData.Count() > 0)
{
string userName = splitColData[0];
DateTime JoinedOn = Convert.ToDateTime(splitColData[1]);
ModelField fieldJoinedOn = new ModelField("Joined On", ModelFieldType.Date);
store.AddField(fieldJoinedOn);
Column gridCol = new Column();
gridCol.Text = userName;
ComponentColumn columnJoinedOn = new ComponentColumn();
columnJoinedOn.Text = "Completed On";
columnJoinedOn.DataIndex = completedOnFieldName;
columnJoinedOn.Editor = true;
DateField dtJoinedOn = new DateField();
dtJoinedOn.Value = completedOn;
columnCompletedOn.Component.Add(dtJoinedOn);
gridCol.Columns.Add(columnJoinedOn);
grid.AddColumn(gridCol);
}
}
}
}
var result = finalData;
return this.Direct(result);
}
else
{
var result = "Error";
return this.Direct(result);
}
}
}
Thanks
Last edited by fabricio.murta; Mar 04, 2016 at 11:54 AM.