Как связать данные отдельной записи с элементами управления в ASP.NET? - PullRequest
3 голосов
/ 22 августа 2011

Каков наилучший элемент управления / подход в ASP.NET 4 для привязки данных из одной записи, получаемой с сервера sql?У меня есть страница для отображения текста, поэтому мне нужны метки, такие как заголовок, дата публикации, содержание и т. Д. - одна метка для каждой информации.Конечно, я могу использовать ListView или Repeater, но мне интересно, есть ли другой способ.

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 23 августа 2011

Вы можете использовать DetailsView, который предназначен для отображения одной записи (хотя обычно используется в сценарии мастер-детали).DetailsView может использовать SqlDatasource.

Простой пример:

<asp:SqlDataSource id="slqDataSource1" runat="server"
     ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
     SelectCommand="SELECT * FROM Table" />

<asp:DetailsView id="detailsView1" runat="server"
     AutoGenerateRows="true" DataKeyNames="Id"
     DataSourceID="sqlDataSource1" />

В приведенном выше примере создается DetailsView на основе SelectCommnad объекта SqlDataSource.В приведенной выше реализации, поскольку AutoGenerateRows имеет значение true, элемент управления будет отображать данные.Однако вы также можете указать поля явно и иметь различные поля, которые вы можете выбрать (BoundField, ButtonField, CheckBoxField и т. Д.).

DetailsView Class

2 голосов
/ 22 августа 2011

sqldatareader - хороший вариант.

Вы можете создать sql-команду, а затем использовать метод .executereader.Например:

dim myReader as SqlDatareader
Dim myCommand As New SqlCommand("myStoredProcedure", myConnection)
        With myCommand
            .CommandType = CommandType.StoredProcedure
            With .Parameters
                .Clear()
                .AddWithValue("myParameter", parametervalue)
            End With
        End With
Try
   myConnection.open
   myReader = myCommand.ExecuteReader
   While myReader.Read
       Me.myTextBox.Text = myReader("fieldname")
       Me.myCheckbox.Checked = myReader("fieldname")
   End While
Catch ex As Exception
   Response.Write(ex.Message)
Finally
   myConnection.Close()
End Try

или что-то подобное ...

0 голосов
/ 23 августа 2011

Вы не можете привязать данные к текстовому полю.Однако использование считывателя, подобного приведенному выше, создает ВЕСЬ кучу ненужных накладных расходов.Почему бы не создать класс?Таким образом, вы получаете его в своем DAL, а затем выполняете некоторую обработку (или преобразование) в своем BLL.DataReaders и DataSets не должны использоваться, если вы не связаны.

...