2012-02-15 3 views
0

나는 다음과 같은 데이터 그리드 있습니다바인딩 유효성 검사 컨트롤

모든 바인딩이 마지막 열의 ItemTemplate을위한 유효성 검사 컨트롤에서 제외한 일
<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

<%# ... %>10 구문을 사용하여 전체 값 부분 값이 아닌 속성 값만 지정할 수 있습니다.

변경

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

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