繁体   English   中英

HTML select标记内的中继器

[英]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>

解决问题的正确方法是:

  1. runat="server"应用于Select。
  2. 删除中继器

您不需要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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM