[英]Repeater inside an HTML select tag
我被迫使用选择标记,因此请不要建议asp下拉列表。
我的问题是,除非有runat = server,否则select标签是不可见的。 如果我放置了runat = server,则会收到一条错误消息,指出我无法在HTMLSelect内使用中继器 。
任何建议将非常欢迎,谢谢!
<select name="medicineName" class="grey-text initialized">
<option value="" disabled selected>Choose medicine</option>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<option value='<%# Eval("id")%>'>
<%# Eval("name") %> | <%# Eval("unit") %> | <%#Eval ("quantity") %>
</option>
</ItemTemplate>
</asp:Repeater>
</select>
解决问题的正确方法是:
runat="server"
应用于Select。 您不需要Repeater
,它所要做的就是循环遍历Collection并以您构建的格式输出。 从后面的代码中,您实际上可以应用DataSource
例如Repeater
,然后它将在您的Select中输出。 您如何实现这一目标:
// Build Model:
public class Medicine
{
public int? Id { get; set; }
public string Name { get; set; }
}
您有了模型,现在将Query<Medicine>(...)
。 这将建立您的模型的Collection
。 然后,您将执行以下操作:
// Dropdown:
drpMedicine.DataSource = Query<Medicine>(...);
drpMedicine.DataBind();
然后在您的前端,执行以下操作:
<select id="drpMedicine" runat="server" datatextfield="Name" datavaluefield="Id"></select>
这样一来,您无需手动创建循环即可绑定List
。
请注意,查询是一种自定义方法,它将建立并格式化数据。 您需要执行以下操作。
为了实现DropDownList控件(而不是Repeater)的用法,请确保将数据库列连接为SQL语句中的一列。
例如:
SELECT id, name + ' | ' + unit + ' | ' + CONVERT(varchar, quantity) AS medicine
FROM medicines_table
我假设您的数量列使用的是整数数据类型,这就是为什么我将其转换为字符串值的原因。
现在,您可以从代码的后面为DataTextField和DataValueField属性设置值:
// other code here
yourDropDownList.DataTextField = "medicine";
yourDropDownList.DateValueField = "id";
// other code here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.