6

標準のドロップダウンリストがあり、リストにデータバインドできます。

<asp:DropDownList runat="server" ID="ddlMake" ClientIDMode="Static" DataTextField="Name" DataValueField="URL" AppendDataBoundItems="true">
    <asp:ListItem>Select Make</asp:ListItem>
</asp:DropDownList>

以下のようなオプションにデータ属性を追加したいと思います。

<asp:ListItem data-siteid="<%# DataBinder.Eval(Container.DataItem, "SiteID") %>">Select Make</asp:ListItem>

data-siteidを認識しないため、明らかにエラーが発生します。

リストはデータバインドされています。

ヒントは便利です

4

4 に答える 4

19

これは、コードビハインドで行うことができます。これが最もエレガントなアプローチかどうかはわかりませんが、うまくいくはずです。

Dim dataSrc() As String = {"ABC", "123", "!@*#"}
drp.DataSource = dataSrc
drp.DataBind()
For i = 0 To drp.Items.Count - 1
    drp.Items(i).Attributes.Add("data-siteId", dataSrc(i))
Next

また、これがデータにバインドされていないものである場合は、HtmlSelectコントロールの使用を検討することもできます。これも機能するはずです。

<select id="drp2" runat="server">
  <option data-siteId="2">ABC</option>
  <option data-siteId="3">123</option>
  <option data-siteId="4">@*!&</option>
</select>
于 2012-08-06T20:03:28.143 に答える
4

ページを再投稿する必要がなかったので、リピーターを使用することになりました。これにより、ondataboundイベントを操作する必要がなくなりました。

<asp:Repeater runat="server" ID="rptDropDown">
    <HeaderTemplate>
        <select id="ddlMake">
            <option value="">Select Make</option>
    </HeaderTemplate>
    <ItemTemplate>
        <option data-siteid="<%# DataBinder.Eval(Container.DataItem, "SiteID") %>" value="<%# DataBinder.Eval(Container.DataItem, "URL") %>"><%# DataBinder.Eval(Container.DataItem, "Name") %></option>
    </ItemTemplate>
    <FooterTemplate>
        </select>
    </FooterTemplate>        
</asp:Repeater>
于 2012-08-08T13:16:25.873 に答える
0

イベント処理が必要ない場合は、純粋なhtmlで書き直すことができます。

    <select>
      <%foreach (var item in DataSource){%>
        <option data-siteid="<%=item.SiteID%>" value="<%=item.Value%>"><%=item.Name%> </option>
      <%}%>
    </select>
于 2012-08-06T20:04:48.790 に答える
0

私はこれを行うことになりました(dsデータセットはどこにありますか):

for (int row = 0; row <= ds.Tables(0).Rows.Count - 1; row++) {
    ddl.Items(row).Attributes.Add("data-siteid", ds.Tables(0).Rows(row)("SiteID"));
}
于 2016-10-19T14:00:11.780 に答える