As I wrote composite key components are text strings. They can contain any characters including spaces and _ characters. Due to jqGrid bug spaces and maybe some other characters are not allowed in ids.
Will serializeDelData, delData work also in row edit mode ? They are documented in form editing chapter so I expected that they will not work in row editing mode.
URL limit may be too short so onClickSubmit cannot used. Db structure change requires lot of changes in existing application, it is too expensive.
I suppose that under row edit mode you mean inline editing mode. It has serializeRowData which lay the same role as serializeDelData for the form editing. If you use both editing modes together in the grid you can share the code of the function which implement seriaization in both cases.
I am sure, that if you use id which is several kilobytes long than you should make modification in your database model. The usage of such “key” is almost the same as to use the full row data. It will be slow and ineffective. The
This is dictionary table contianing different languages in columns. Primary key is phrase in source language. This table is used for translations. Surrogate id will be used then only by jqGrid.
I'm not sure that adding surrogate id to this table is reasonable for this.
Base64 encoding makes id too long and unreadable in packet dumps when debugging.
How to create encoder/decoder which masks only characters which are not allowed in jqGrid ids? Where to find list of such characters ? Are most unicode characters allowed in ids ? Should only spaces encoded or other characters also ?
I created method below to encode/decode jquery ids. This will also handle the case if id is empty. Will thoser methods encode all characters which are not alowed in jquery ids?
Is it resonable to use those methods instead on md5 or base64 ?
I find encoding of large texts not the best way. With respect of Encoding.UTF8.GetBytes or Encoding.ASCII.GetBytes you can get byte representation of any string and with respect of MD5CryptoServiceProvider.ComputeHash you can calculate the MD5 from the bytes. Then you can convert the MD5 value to HEX or to Base64. In the database you can save the MD5 directly as binary and in HTML use the values converted to HEX or to Base64. So instead of the usage long (even encoded) texts as id you can use short values.