---- > У меня есть datatable, который переходит на другую страницу в переменной сеанса.
---- > Теперь на другой странице я беру переменную сессии в datatable.
datatable ds_table = new datatable();
ds_table = (datatable)session["table_value"];
---- > поэтому проблема заключается в том, что при фильтрации некоторых строк из ds_table. которые вступают в силу в переменной сеанса. если некоторые строки удалены из ds_table. то он также удаляется из переменной сеанса.
---- > Итак, кто-нибудь скажет мне, почему это происходит?
помогите мне. его необходимо.
Я бы предложил вам скопировать данные, прежде чем размещать их в сеансе. Тогда это не будет зависеть от каких-либо изменений, которые вы сделаете позже исходных данных.
Все, что вам нужно сделать, это объявить новую переменную DataTable и скопировать ее:
private void CopyDataTable(DataTable table){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = table.Copy();
// Insert code to work with the copy.
}
Затем вы можете поместить copyDataTable
в сеанс.
Хорошо, если session [ "table_value" ] указывает на datatable, и вы назначаете его значение (datatable) другой переменной, а THEN MAKE CHANGES эта переменная будет изменена в datatable, и вы увидите эффект, который вы проиллюстрировали.
----- Не всегда, но в том случае, когда вы проиллюстрировали (так же как datatable общий ресурс?)
Похоже, вы хотите сделать копию DataTable. Попробуйте следующее:
ds_table = ((datatable)session["table_value"]).Copy();
Это будет плохо, если DataTable большой, так что имейте это в виду. Тем не менее использование сеанса для большого DataTable в любом случае звучит как плохая идея!
Конечно, работает ли это или нет, зависит от того, где вы меняете свое состояние (я сделал некоторые большие предположения). Возможно, более подробно описано, что вы делаете, и получите дополнительную помощь (например, пример кода).