在DropdownList中使用自定义数据属性

时间:2018-08-13 08:14:24

标签: javascript asp.net user-controls dropdown ascx

我在Datagrid内部有一个User控件,可以添加行。每行包含两个textobxes和一个Dropdownlist。 用户可以保存他在每个文本框中输入的内容,并保存下拉菜单中的选择项。

文本框直接与不同的属性( ProductionCostInvoicedTo ProductionCostEuro )绑定,因此可以直接打印正确的值。

我想选择保存在下拉列表( ProductionCostNatureId )中的值,要做到这一点,我在下拉列表中使用了Javascript和Custom属性:

 <asp:DataGrid ID="ProdCostGrid" runat="server" AutoGenerateColumns="False" BorderColor="#f0f0f0" BorderStyle="None" BorderWidth="0px" CellPadding="0">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<Columns>
    <asp:BoundColumn Visible="False" DataField="Id" HeaderText="Id"></asp:BoundColumn>
    <asp:TemplateColumn>
        <ItemTemplate>
            Amount:&nbsp;<asp:TextBox ID="ProductionCostLineField" Text='<%# ToText(Eval("ProductionCostEuro")) %>'
                TabIndex="24" runat="server" Width="80px" MaxLength="13"></asp:TextBox>&nbsp;EUR
        </ItemTemplate>
        <ItemStyle Width="170px" HorizontalAlign="Right"></ItemStyle>
    </asp:TemplateColumn>
    <asp:TemplateColumn>
        <HeaderTemplate>
            Invoiced by</HeaderTemplate>
        <ItemTemplate>
            <asp:TextBox ID="ProductionCostInvoiceToLineField" Text='<%# Eval("ProductionCostInvoicedTo") %>'
                TabIndex="25" runat="server" Width="269px" MaxLength="100"></asp:TextBox>
        </ItemTemplate>
        <ItemStyle Width="300px" HorizontalAlign="Center"></ItemStyle>
    </asp:TemplateColumn>

    <asp:TemplateColumn>
        <HeaderTemplate>
            (Prod Cost) Nature</HeaderTemplate>
        <ItemTemplate>
            <asp:DropDownList ID="ProductionCostNatureList" CssClass="myClass" data-id='<%# ToText(Eval("ProductionCostNatureId")) %>'  TabIndex="3" runat="server" DataTextField="Name" Width="75%" DataValueField="Id" AutoPostBack="true">
            </asp:DropDownList>
        </ItemTemplate>
        <ItemStyle Width="300px" HorizontalAlign="Center"></ItemStyle>
    </asp:TemplateColumn>


</Columns>

使用Javascript从自定义属性中选择合适的元素:

 $(function () {
    var id = $('.myClass').attr('data-id');
    $('.myClass').each(function () {
        $(this).get(0).selectedIndex = id;
        $(this).change();
    });
});

在ASCX中,我收到错误消息:“诸如Eval(),XPath()和Bind()之类的数据绑定方法只能在数据绑定控件的上下文中使用”

我不想使用“隐藏”文本框...

0 个答案:

没有答案