Hi everyone !!!
I'm having a problem with WebDataGrid. I'm using 13.1 and in DataFiltered client side event I'm trying to obtain a parameter that I put in server side on Page_Load event.
Page_Load event (server side)
GridView1.CustomAJAXResponse.AdditionalProperties.Add("rowCount", -1);
Javascript Client Side
function GridView1_DataFiltered(sender, eventArgs) { ///<param name="sender" type="Infragistics.Web.UI.WebDataGrid"></param> ///<param name="eventArgs" type="Infragistics.Web.UI.DataFilteredArgs"></param>
//Add code to handle your event here. var rowCount = eventArgs.get_gridResponseObject().AdditionalProperties.rowCount; if (rowCount != -1) { $("#lblTotal").text("Total: " + rowCount + " Registro(s)"); } }
Until yesterday, I was trying to fix another problem I had with paging behavior but, after fix it, I encountered with the filtering problem.
Thanks a lot !!!!
Gustavo.-
Hello Gustavo,
I have tested this comparing the Events firing Order for the standard AJAX Response ClientSide event and the FilteringClientEvent WebDataGrid1_Filtering_DataFiltered and I have done some debugging.
It appears the firing order is such:
When filtering happened first the Data Filtered event fires and at this time the custom response object is still unavailable, since the WebDataGrid1_Grid_AJAXResponse event has not occurred yet. This is why the property is initially undefined. You could use a global variable in order to work around this and yet, next time the Data Filtered is fired the custom Properties are accessible BUT the old value is stored and not the actual one. I suggest looking into the code will make more sense than describing it in words, so please feel free to refer to the attached file and debug it on your own.
Please let me know if this helps you.
Ivaylo,
Thanks for your response but I'm thinking that I don't express my problem with clarity.
I know how to use AdditionalProperties for CustomAJAXResponse, in fact, it worked for several days until I fixed another problem.
If you look at the image that I attached to the post, I don't know why the eventArgs parametter in DataFiltered(), I have tried in AJAXResponse() also, don't recognize the get_customResponseObject(). This is my mayor problem !!!
Sorry for my english if I make mistakes, I'm from Argentina ...
Regards,
Thank you for posting in our forums.
Regarding the use of CustomAJAXResponse.AdditionalProperties you could refer to these resources:
storing node data for ajax postback
How do I reset the css styling of a row during an ajax post-back
As example – a scenario of using AdditionalPropperties:
”So let's assume we have a bunch of cells which style we want to change.
1) We form by some logic on the server side the array of these cells. For example, GridRecordItem[] cells.
2) We add "addresses" of these cells to customAjaxResponse. There are different ways to do that - using indexes (which I wouldn't recommend because if something in your code sorts the values it can cause problems) or idpairs for rows, I just used row.DataKey in the following code:
int i = 0; foreach (GridRecordItem cell in cells) { this.WebDataGrid1.CustomAJAXResponse.AdditionalProperties.Add("rowKey" + i.ToString(), cell.Row.DataKey); this.WebDataGrid1.CustomAJAXResponse.AdditionalProperties.Add("columnKey" + i.ToString(), cell.Column.Key); i++; } this.WebDataGrid1.CustomAJAXResponse.AdditionalProperties.Add("Count", i);
Please note, that for this you must have columnKeys assigned.
3) In AJAX postback handler on the client side we set our styles.
function WebDataGrid1_Grid_AJAXResponse(sender, e) { var grid = $find('<%= this.WebDataGrid1.ClientID %>'); var properties = e.get_customResponseObject().AdditionalProperties; for (var i = 0; i < properties.Count; i++) { var rowKey = properties["rowKey" + i]; var columnKey = properties["columnKey" + i]; var row = grid.get_rows().get_rowFromKey(rowKey); if (row != null) { var cell = row.get_cellByColumnKey(columnKey); if (cell != null) { cell.get_element().className = "YourCSSName"; }
} } }”
Please let me know how these suggestions work for you and if you require further assistance.