Четверг Мая 17 , 2012
TEXT_SIZE
   


Свойство RowFilter

Свойство RowFilter аналогично разделу WHERE SQL-запроса. Через представление доступны только записи, удовлетворяющие заданному в свойстве критерию. Значение свойства RowFilter по умолчанию — пустая строка. Простой фильтр на основе столбца со строками: vue. RowFilter = "Country = 'Spain'Фильтр на основе шаблона (отображает только те ряды, значение поля CustomerlD которых начинается с Л): vue. RowFilter = "CustomerlD LIKE "AM"1 Заключение дат в символы-разделители: vue.

RowFilter = "OrderDate >= #01/01/2002 AND OrderDate< 02/01/2002заключение имен столбцов в символы-разделители и обработка символа-разделителя в значении столбца: vue. rowfilter = "[spaces in column name] = 'op'malley'свойство rowstatefilter свойство rowstatefilter двумя способами определяет, какие данные доступны через объект dataview. оно фильтрует объекты datarow по значению их свойств rou'state, а также определяет, какая версия ряда доступна через объект dataview. как уже говорилось, свойство rowstatefilter принимает отдельные значения и их комбинации из перечисления dataviewrowstate. чтобы задать свойство rowstatefilter, применяют конструктор объекта dataview. значение свойства rowstatefilter по умолчанию — currentrows. при этом через представление доступны все записи объекта datatable, удовлетворяющие критерию, заданному в свойстве sort объекта dataview, и не помеченные как удаленные. свойство sort свойство sort определяет порядок сортировки данных, доступных через объект dataview, и функционирует практически аналогично разделу order by sql-запроса. порядок сортировки можно .чадать на отдельном поле или группе полей. по умолчанию ряды сортируются в возрастающем порядке. для сортировки полей в убывающем порядке добавьте после имени поля ключевое слово desc. если имя поля содержит символ, отличный от буквенно- числового (например, пробел), или является зарезервированным словом, не забудьте заключить его в символыразделители. простая сортировка по двум полям (country, затем city): vue.sort = "country, city сортировка в убывающем порядке: vue.sort = "orderdate desc заключение имени поля в символы-разделители: vue.sort = "[space in columnname]значение свойства sort по умолчанию — пустая строка; при этом все содержимое объекта dataview выводится в порядке, соответствующем порядку базового объекта datatable. задать свойство sort можно посредством конструктора объекта dataview, свойство table свойство table позволяет задать или обратиться к объекте datatable, с которым связан объект dataview. если изменить значение свойства table, свойствам rowfilter и rowstateftiter объекта dataview задаются соответствующие значения по умолчанию. чтобы задать свойство table, используют конструктор объекта dataview. на момент написания данной книги свойству table не разрешалось задавать объект datatable, свойство tablenatne которого — пустая строка; в противном случае генерировалось исключение. методы объекта dataview методы addnew и delete методы addnew и delete позволяют добавлять и удалять записи данных из базового объекта datatable. метод addnew возвращает новый объект datarowview. задав значения нужных полей, вы можете вызвать метод endedit объекта datarowview и добавить запись данных в базовый объект datatable. метод delete принимает порядковый номер записи в объекте dataview и позволяет удалить эту запись. если у вас есть ссылка на объект datarow или datarowview, для удаления записи стоит применить метод delete одного из этих объектов. помните, что в этом случае запись просто помечается как удаленная. чтобы на самом деле удалить ее из объекта datatable, вызовите mtro^acceptcbanges (объекта datarow, datatable или dataset, содержащего ряд) или передайте изменения в бд с помощью объекта dataadapter. методы beginlnit и endtnit если вам необходимо изменить значения нескольких свойств объекта dataview, но вы не хотите, чтобы эти изменения сказались на доступных через этот объект данных, пока вы не измените значения всех нужных свойств, воспользуйтесь методами beginlnit и endlnit, представьте, например, что объект dataview связан с определенным объектом datatable и значение свойства rowfilter объекта dataview таково, что через последний доступна лишь небольшая часть записей данных. содержимое объекта dataview выводится в элементе управления datagrid windows-форме, и по указанию пользователя вам требуется изменять значения свойств table и rowfilter объекта dataview. в данной ситуации код, изменяющий значения свойств объекта dataview, следует поместать в вызовы методов beginlnit и endlnit объекта dataview, чтобы запретить элементе управления datagrid моментально отображать все записи нового объекта datatable, метод сору то объект dataview предоставляет метод с ору то. он функционирует аналогично методу соруто объекта art-ay и позволяет копировать объекты datarowview, доступные через объект dataview. в массив. если честно, я не знаю, чем вам поможет массив объектов datarowview. однако все же давайте рассмотрим фрагмент кода, в котором используется метод соруто, на случай, если кто-то сумеет найти ему применение. вероятно, этот человек вспомнит, как помог ему данный фрагмент кода, и поблагодарит меня. я принимаю и наличные. visual basic .net dim tbl as new datatable("customers") dim viie as dataview vue = new dataview(tbl) dim arows as datarowvlew() arows-= array.createinstance(gettype(datarowview), vue.count) vue,copyto(aflows, 0) visual c# .net datatable tbl = new datatable("customers"); dataview vue; vue = new dataview(tbl); datarowview[] arows; arows = array,createinstance(typeof(datarowview), vue.count); vue.copyto(arows, 0); методы find и findrows методы find и findroivs позволяют искать записи данных в объекте dataview. они оба перегружены и принимают отдельное значение или массив значений. объект dataview на основе указанных значений осуществляет поиск среди своего содер жимого по столбцам, перечисленным в свойстве sort: visual basic .net dim strconn as string = "provider=sqloledb;data source=(local) etsdk;" & "initial catalog=northwind;truste'd_connection=yes;dim strsql as string = "select customerld, companуname, contactname, " & "phone, city, country from customersdim da as new oledbdataadapter(strsql, strconn) dim tbl as new oatatablec'customers") da.fill(tbl) dim vue as new dataview(tbl) console.writeline("use the find method to locate a row " & "based on the contactname column") vue.sort = "contactnamedim intlndex as integer = vue.find("fran wilson") if intlndex = -1 then console.writeline(vbtab & "row not found!") else console.writeline(vbtab & vue(intindex}("companynameend if console, writeline() console.writelinec'use the findrows method to locate rows " & "based on the country column") vue.sort = "countrydim arows as datarowview() = vue.findrows("spain") if arows.length = 0 then console.writeline(vbtab & "no rows found!") else dim row as datarowview for each row in arows console.writeline(vbtab & row("city")) next row end if visual c# .net string strconn = "provider=sqloledb;data source={local)\ etsdk;" + "initial catalog=northwind;trusted_connection=yes;"; string strsql = "select customerld, companyname, contactnarne, " + "phone, city, country from customers"; oledbdataadapter da = new oledbdataadapter(strsql, strconn); datatable tbl = new datatable("customers"); da.fill(tbl); dataview vue = new dataview(tbl); console.writeline("use the find method to locate a row " + "based on the contactname column"); vue.sort = "contactname"; int intlndex = vue.find("fran wilson"); if (intlndex == -1) console.writeline("\t" + "row not found!"); else console.writeline("\t" + vue[intindex]["companyname"]); console. writeline(); console.wrlteline("use the findrows method to locate rows " + "based on the country column"); vue.sort = "country"; datarowview[] arows = vue.findrows("spain"); if (arows.length == 0) console.writeline("\t" +• "no rows found!"); else foreach (datarowview row in arows) console.writeline("\t" + row["city"]); метод getenumerator метод getenumerator предоставляет еще один способ просмотреть содержимое объекта dataview. он возвращает экземпляр объекта lenumerator, расположенного в пространстве имен system.collections. метод movenext объекта lenumerator аналогичен методу read объекта datareader и возвращает логическое значение, указывающее, доступен ли следующий объект набора. свойство current возвращает текущий объект с универсальным типом данных object. следующий фрагмент кода преобразует вывод в объект datarowvieir. visual basic .net dim tbl as new datatable("customers") dim vue as dataview(tbl) dim row as datarowview dim objenum as lenumerator = vue.getenumerator do while objenum.hovenext() row = ctype(objenum. current, datarowview) console. writeline( row( "companyname" ) ) loop visual c# .net datatable tbl = new datatable('customers"); dataview vue = new dataview(tbl); datarowview row; lenumerator objenum = vue.getenumerator(); while (objenum.movenext()) { row = (datarowview) objenum. current; console . writeline( row[ "companyname" ] ); }

Добавить комментарий


Защитный код
Обновить

Рейтинг пользователей: / 1
ХудшийЛучший 

Метео

Войти

Голосование

Идеальный вариант проведения новогодней корпоративной вечеринки - это…

Сейчас на сайте

Сейчас 5 гостей онлайн