asp.net中下拉列表的正确动态填充
我是asp.net的新手,我想问一下,在asp.net中填充下拉列表更合适的方法是什么?使用数据源或使用sqldatareader和for循环 我正在使用sqldatareader和for循环,下面是我的示例代码:asp.net中下拉列表的正确动态填充,asp.net,sql,sqldatasource,sqldatareader,Asp.net,Sql,Sqldatasource,Sqldatareader,我是asp.net的新手,我想问一下,在asp.net中填充下拉列表更合适的方法是什么?使用数据源或使用sqldatareader和for循环 我正在使用sqldatareader和for循环,下面是我的示例代码: For i = 1 To 20 etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID = " & i &
For i = 1 To 20
etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID = " & i & ""
Dim dr As SqlDataReader = etc.ExecuteReader
While (dr.Read())
ddoneclassification.Items.Add(dr.GetString(0))
End While
dr.Close()
Next
使用sqldatasource和这个有区别吗??我从不使用sqldatasource填充下拉列表。在我看来,最简单也是最好的解决方案是设置DropDownList的DataSource属性。在这种情况下,所有必需的工作都在幕后完成,您不需要考虑db服务器和web服务器之间的同步数据 另外,如果我是您,我会修改sql,以便只向DB服务器发送一个请求,即
"select Classification from schemaItemDetails.AssetClassification where AC_ID between 1 and 20"
不要执行循环,而是获取查询中的20项(
从表中选择前20个ID、名称,其中..
)并将其绑定到下拉控件
ddoneclassification.DataSource=dr
ddoneclassification.DataTextField="Name"
ddoneclassification.DataValueField="ID"
ddoneclassification.DataBind()
假设在查询的结果集中有两个名为Name和ID的字段。这与您的几乎相同,但“while”循环已被删除,并替换为将返回更多结果的查询。Read()方法每次调用时都会增加索引,也就是每次进行循环检查时,因此您的原始代码几乎没有问题 数据绑定是另一种选择,但这肯定是有效的。我当然不会认为它是“错误的”。 注意:不同的数据库处理“中间”的方式不同,所以请检查您的数据库如何处理。您可能必须使用
,其中AC_ID>=1和AC_ID>=20
,具体取决于数据库包含/排除的边界
更多关于这方面的信息,请参阅的底部。我认为您应该使用数据源来填充下拉列表。只需为下拉列表选择数据源并进行配置。 Sqldatareader基本上用于以仅向前的顺序方式读取数据,而datasource用于在数据库和网页之间建立连接 请看这段视频:
etc.CommandText = "select Classification from schemaItemDetails.AssetClassification where AC_ID between 1 and 20"
Dim dr As SqlDataReader = etc.ExecuteReader
While (dr.Read())
ddoneclassification.Items.Add(dr.GetString(0))
End While
dr.Close()