【发布时间】:2011-08-22 19:36:57
【问题描述】:
在 ASP.NET 4 中,从 sql server 获取的单个记录中绑定数据的最佳控制/方法是什么?我有一些页面来显示文本,所以我需要标题、出版日期、内容等标签 - 每个数据的单个标签。我当然可以使用 ListView 或 Repeater,但我想知道是否有其他方式。
提前致谢
【问题讨论】:
标签: asp.net sql-server data-binding
在 ASP.NET 4 中,从 sql server 获取的单个记录中绑定数据的最佳控制/方法是什么?我有一些页面来显示文本,所以我需要标题、出版日期、内容等标签 - 每个数据的单个标签。我当然可以使用 ListView 或 Repeater,但我想知道是否有其他方式。
提前致谢
【问题讨论】:
标签: asp.net sql-server data-binding
您可以使用 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" />
上面的例子基于SqlDataSource的SelectCommnad创建了一个DetailsView。在上面的实现中,由于 AutoGenerateRows 设置为 true,因此控件将呈现数据。但是,您也可以显式指定字段,并且可以选择不同的字段(BoundField、ButtonField、CheckBoxField 等)。
【讨论】:
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
或者类似的……
【讨论】:
您不能将数据绑定到文本字段。但是,使用上面列出的阅读器会产生一大堆不必要的开销。为什么不创建一个类? 这样您就可以在 DAL 中获取它,然后在 BLL 中进行一些处理(或转换)。
无论如何我都会这样做。除非您正在绑定,否则不应使用 DataReaders 和 DataSets。
【讨论】: