< назад

DATA LIST

Data List - стандартный asp control, который используется для отображения данных с присвоенными картинками (в Style Folder, Image Folder, Material Folder и т.д.) в режиме thumb view.

В data list-ах используются чекбоксы, которые задаются из кода. Под чекбосом находится картинка > под картинкой панель (которая строится на основе XML файла и обрабатывается с помощью Form Handler-а).

Самое основное: в data list-ах - нет стандартного "пейджинга". Именно поэтому, в коде, из БД берется количество записей для каждой отдельной страницы. При переходе на следующую страницу - запрашиваются данные о количестве записей на следующей странице. Этим data list-ы отличаются от grid-ов (см. Data Grid, Rad Grid).

Отдельный запрос к БД: из базы берется количество всех записей > для каждой странице устанавливается количество записей, которое будет выводиться > строится data list. Так же точно рассчитывается количество страниц для "пейджинга".

Для data list- ов применяется сортировка. Данные можно сортировать по возрастанию/убыванию/алфавиту.



Техническая часть

BindDataList() " функция которая заполняет даталист значениями
Me.Datalist1.RepeatColumns = ItemsPerRow() " количество столбцов в даталисте
lblRecordCount.Text = GetRecordsCount() " получение общего количества записей

  Private Sub BindDataList() " функция которая заполняет даталист значениями

    If lblRecordCount.Text = String.Empty Then lblRecordCount.Text = "0"

    sqlImage = SearchImageXMLForm() " формирование запроса к базе - замена PageQuery() для датабейз пейджинга
   sqlImage = SetAccessQuery(sqlImage)

        "блок кода отвечающий за сортировку
---------------------------------------------------------------------------------------         If strSortField <> String.Empty And strSortBy String.Empty Then
Me.sqlImage = Me.sqlImage & " ORDER BY " & strSortField & " " & strSortBy
If strSortField = "ImageNo" Then
sqlImage = sqlImage.Replace("* FROM", "*, SUBSTRING(ImageNo, 0, LEN(ImageNo) - PATINDEX('%[a-Z]%', REVERSE(ImageNo))+2) as ImageCodeSort, CAST(TempNo as INT) as ImageNoSort FROM")
If strSortBy = "DESC" Then
sqlImage = sqlImage.Replace("ORDER BY ImageNo DESC", "ORDER BY ImageCodeSort DESC, ImageNoSort DESC")
Else
sqlImage = sqlImage.Replace("ORDER BY ImageNo", "ORDER BY ImageCodeSort, ImageNoSort")
End If
End If
Else
Me.sqlImage = sqlImage & " ORDER BY MDate DESC"
End If
"конец сортировки

Dim oDt As DataTable
Using oCnn As New SqlConnection(strConnection)
intRecordFound = SqlHelper.GetRecordCount(oCnn, sqlImage) " получение общего количества записей
Dim pageCount As Integer = Math.Ceiling(intRecordFound / CInt(ps.SelectedValue)) " количество страниц
If CInt(lblCurrentIndex.Text) >= pageCount Then
lblCurrentIndex.Text = "0"
End If

oDt = SqlHelper.ExecuteDataset(oCnn, CommandType.Text, SqlHelper.AddSQL2008PagingToSQL( sqlImage, CInt(lblCurrentIndex.Text) + 1, CInt(ps.SelectedValue))).Tables(0) " получаем записи для текущей страницы
End Using Datalist2.DataSource = oDt "присваиваем полученные данные даталисту
Datalist2.DataBind()

lblRecordCount.Text = CStr(intRecordFound)
LoadCountControl() " загрузка навигационных клавиш
End Sub