Как использовать строго типизированную таблицу данных (или строку) в коде программной части WebForms?

Наше приложение asp.net WebForms использует адаптеры таблиц для «строго типизированных таблиц данных» и строк данных. В отделенном коде я обнаружил, что не могу использовать возвращаемое значение непосредственно из экземпляра класса BLL (например, нашего «Main_TblAdap.CostDataTable»), как в отношении строго типизированных строк данных и столбцов/полей внутри.

Как правильно использовать строго типизированную таблицу данных или строку данных в коде событий и методов?

Кроме того, нам нужна возможность ссылаться на определенную строку данных или сортировать/фильтровать таблицу данных.

Хороший пример кода был бы очень полезен, демонстрируя лучший способ (1) получить из строго типизированной таблицы данных ссылки на значения в определенной строке данных из таблицы данных и (2) как сортировать/фильтровать строго типизированная таблица данных.


person John D    schedule 28.10.2015    source источник


Ответы (1)


Сначала создайте DataView из таблицы. Вы можете либо настроить представление при инициализации, либо вызвать get default.

DataView dv = yourTable.DefaultView;

Или продолжайте и отфильтруйте представление из таблицы, когда вы создаете свой ссылочный указатель следующим образом:

DataView custDV = new DataView(YourTable[yourTableName], 
"VehicleID = 'xxx'", // Row filter
"VehicleID", // Sort
DataViewRowState.CurrentRows);

Теперь вы можете сортировать представление и фильтровать по состоянию строки.

dv.Sort();
view.RowStateFilter = DataViewRowState.Added | 
    DataViewRowState.ModifiedCurrent;

РЯДЫ. Вы можете взаимодействовать с DataRowView IEnumerable в DataView.

 foreach (DataRowView rowView in thisDataView)
 {
   // your code here
 }

OR

    foreach(DataRow r in dt.Rows)
    {
     // your code here
    }

Чтобы найти строки в таблице, попробуйте:

var result = dt.AsEnumerable().Select(r => r["Id"] = 4);

    if(result !=null)
    {
        int x = 0;
    }

Теперь просто привяжите к своему представлению, и если вы добавите строку или обновите ее, представление также будет обновлено.

person Kentonbmax    schedule 28.10.2015
comment
Спасибо за ваш ответ. - person John D; 28.10.2015
comment
Спасибо за ваш ответ. Однако я не вижу связи между переменными и примерами. Например: для сортировки, что такое «представление»; это дв? если нет, то что такое просмотр? Я не уверен, что фильтруется или сортируется? Что делать, если я хочу отфильтровать по VehicleID=555? ТАКЖЕ, // в вашем коде поля строго типизированы, как в r.InitalDate -- как ссылаются на поля? Что такое dt в последнем примере? - строго типизированная таблица yourTable? или что это? Спасибо. - person John D; 28.10.2015
comment
Вы создаете указатель dv, используя свою таблицу: DataView dv = yourTable.DefaultView; Когда у вас есть ссылка на dv, вы можете взаимодействовать с ней для сортировки с помощью dv.Sort(); Который имеет некоторые перегрузки. Вы также можете обновить строки таблицы данных, и это будет отражено в представлении. - person Kentonbmax; 28.10.2015
comment
Еще раз спасибо за ответ. Вы разъяснили некоторые из моих предыдущих вопросов. Мой единственный оставшийся вопрос: в разделе ROWS вашего примера, как я могу ссылаться на определенное поле переменной rowView или r в циклах? Я прошу об этом, чтобы определить, могу ли я ссылаться на поле VehicleYear из переменной строки, такой как If (rowView.VehicleYear ‹ 2000) {...} (это подразумевает строгую типизацию). Или я должен ссылаться на него как rowView[VehicleYear]? Заранее спасибо. - person John D; 01.11.2015
comment
Каков результат вашего If (rowView.VehicleYear ‹ 2000) {...}, вы связываете или выполняете и выполняете операцию для этих конкретных совпадений? - person Kentonbmax; 02.11.2015
comment
Я бы выполнял операции с событием DataBound(). - person John D; 28.12.2015