средства проверки привязки в сетке данных - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть следующая таблица данных:

<asp:DataGrid runat="server" ID="gastosReembolsables" ShowFooter="True" AutoGenerateColumns="False">
        <AlternatingItemStyle CssClass="DATAitem2"></AlternatingItemStyle>
        <ItemStyle CssClass="DATAitem1"></ItemStyle>
        <HeaderStyle CssClass="DATAheader"></HeaderStyle>
        <FooterStyle CssClass="DATAitem1"></FooterStyle>
        <Columns>
            <asp:TemplateColumn runat="server" HeaderText="Item">
                <ItemTemplate>
                    <asp:Label ID="Item" runat="server" Text='<%# Eval("item") %>'></asp:Label>
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox runat="server" ID="Item" Width="40px" />
                </FooterTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn runat="server" HeaderText="Precio">
                <ItemTemplate>
                    <asp:Label runat="server" ID="precio" Width="40px" Text='<%# Eval("precio") %>'></asp:Label>
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox runat="server" Width="40px" ID="precio"></asp:TextBox>
                </FooterTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn runat="server" HeaderText="Cantidad">
                <ItemTemplate>
                    <asp:TextBox ID="cantidad" Width="40px" runat="server" Text='<%# Eval("cantidad") %>' />
                    <asp:DropDownList runat="server" ID="unidadMedida" DataValueField='id' DataTextField="nombre"></asp:DropDownList>
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox ID="cantidad" Width="40px" runat="server"></asp:TextBox>
                    <asp:DropDownList runat="server" ID="unidadMedida" DataValueField='id' DataTextField="nombre"></asp:DropDownList>
                </FooterTemplate>
            </asp:TemplateColumn>
            <asp:BoundColumn runat="server" HeaderText="Total" DataField="total" />
            <asp:BoundColumn runat="server" Visible="False" DataField="id" />
            <asp:TemplateColumn runat="server">
                <ItemTemplate>
                    <asp:ImageButton ID="actualizarGasto" runat="server" CommandName="Update" ImageUrl="../../imagenes/btn_guardar.gif"
                        CausesValidation="True" ValidationGroup="item" />
                    <asp:ImageButton ID="eliminarGasto" runat="server" CommandName="Delete" ImageUrl="../../imagenes/btn_eliminar.gif"
                        CausesValidation="False" ValidationGroup="item" />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:ImageButton ID="agregarGasto" runat="server" CommandName="New" ImageUrl="../../imagenes/agregar.png"
                        CausesValidation="True" ValidationGroup="footer" />
                </FooterTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn runat="server" Visible="True">
                <ItemTemplate>
                    <asp:RequiredFieldValidator ID="validaCantidad" runat="server" 
                        ControlToValidate="cantidad" ValidationGroup='item<%# Eval("id") %>' ErrorMessage="Ingrese una Cantidad" Display="Dynamic"></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="validaCantidadNumerico" Display="Dynamic" runat="server" 
                        ControlToValidate="cantidad" ValidationGroup='item<%# Eval("id") %>' ErrorMessage="La cantidad debe ser num&eacute;rica" 
                        Operator="DataTypeCheck" Type="Integer"></asp:CompareValidator>
                    <asp:CompareValidator ID="validaUnidadMedida" runat="server" 
                        ControlToValidate="unidadMedida" ValidationGroup='item<%# Eval("id") %>' ErrorMessage="Seleccione una unidad de medida" Display="Dynamic" Operator="NotEqual" ValueToCompare="0"></asp:CompareValidator>
                    <asp:ValidationSummary ID="resumenGastosReembolsablesItem" runat="server" ShowMessageBox="True" ShowSummary="false" ValidationGroup='item<%# Eval("id") %>' />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:RequiredFieldValidator ID="validaCantidad" runat="server" 
                        ControlToValidate="cantidad" ErrorMessage="Ingrese una Cantidad" Display="None" ValidationGroup="footer"></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="validaCantidadNumerico" runat="server" 
                        ControlToValidate="cantidad" Display="Dynamic" ErrorMessage="La cantidad debe ser num&eacute;rica" 
                        Operator="DataTypeCheck" Type="Integer" ValidationGroup="footer"></asp:CompareValidator>
                    <asp:CompareValidator ID="validaUnidadMedida" runat="server" 
                        ControlToValidate="unidadMedida" ErrorMessage="Seleccione una unidad de medida" Display="Dynamic" ValidationGroup="footer" Operator="NotEqual" ValueToCompare="0"></asp:CompareValidator>
                    <asp:RequiredFieldValidator ID="validaItem" runat="server" 
                        ControlToValidate="Item" ErrorMessage="Ingrese un Item" Display="Dynamic" ValidationGroup="footer"></asp:RequiredFieldValidator>
                    <asp:RequiredFieldValidator ID="validaPrecio" runat="server" 
                        ControlToValidate="precio" ErrorMessage="Ingrese un precio" Display="Dynamic" ValidationGroup="footer"></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="validaPrecioNumerico" runat="server" 
                        ControlToValidate="precio" ErrorMessage="El precio debe ser num&eacute;rico" 
                        Operator="DataTypeCheck" Type="Double" Display="Dynamic" ValidationGroup="footer"></asp:CompareValidator>
                    <asp:ValidationSummary ID="resumenGastosReembolsablesFooter" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="footer" />
                </FooterTemplate>
            </asp:TemplateColumn>
        </Columns>
    </asp:DataGrid>

все привязки работают, кроме тех, что в элементах управления проверкой для шаблона элемента последнего столбца (они передаются в виде текста на веб-страницу).

Почему это происходит?Можно ли вообще сделать то, что я пытаюсь сделать?

1 Ответ

1 голос
/ 15 февраля 2012

Синтаксис <%# ... %> можно использовать только для указания значения всего свойства, а не его частичного значения.

Изменить

ValidationGroup='item<%# Eval("id") %>'

на

ValidationGroup='<%# "item" & Eval("id") %>'
...