2012-02-15 70 views
0

我有以下數據網格:綁定驗證控件

<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> 

除了在最後一列的ItemTemplate中的驗證控件的那些所有綁定工作(它們是作爲文本的網頁通過) 。

這是怎麼發生的?是否有可能做我想做的事情?

回答

1

您只能使用<%# ... %>語法來指定整個整個值屬性,而不是部分值。

變化

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

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