< назад

DATA LIST

Data List - 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   sqlImage = SearchImageXMLForm() - формирование запроса к базе - замена PageQuery() для датабейз пейджинга
sqlImage   sqlImage = SetAccessQuery(sqlImage)

        __________блок кода отвечающий за сортировку__________

Dim strSortField As String
strSortField = Request.Form.Get("ddlSortField") 'ddlSortField.SelectedValue
Dim strSortBy As String
strSortBy = Request.Form.Get("ddlSortBy") 'ddlSortBy.SelectedValue         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