<body>
<form runat="server" ID="Form1">
<h3>DataGrid Editing Example</h3>
<asp:DataGrid id="ItemsGrid" BorderColor="Black" BorderWidth="1px" CellPadding="3" OnEditCommand="ItemsGrid_Edit"
OnCancelCommand="ItemsGrid_Cancel" OnItemDataBound="ItemsGrid_Bound"  OnUpdateCommand="ItemsGrid_Update"
OnItemCommand="ItemsGrid_Command" AutoGenerateColumns="False" runat="server" ShowFooter="True">
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" HeaderText="Edit item" CancelText="Cancel"
EditText="Edit">
<HeaderStyle Wrap="False"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
<asp:ButtonColumn Text="Delete" HeaderText="Delete item" CommandName="Delete"></asp:ButtonColumn>
<asp:BoundColumn DataField="Item" ReadOnly="True" HeaderText="Item"></asp:BoundColumn>
<asp:BoundColumn DataField="Qty" HeaderText="Quantity"></asp:BoundColumn>
<asp:BoundColumn DataField="Price" HeaderText="Price" DataFormatString="{0:c}"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="模板列">
<ItemTemplate>
<asp:Label id=Label2 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.price") %>' Width="98px">
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="TextBox1" runat="server" Width="90px"></asp:TextBox>
<asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage="footer错误" ControlToValidate='ItemsGrid__ctl11_TextBox1'>
</asp:CustomValidator>
</FooterTemplate>
<EditItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.price") %>' Width="98px">
</asp:Label>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<P>
<asp:TextBox id="TextBox2" runat="server"></asp:TextBox>
<asp:CustomValidator OnServerValidate="validate_temp" id="CustomValidator2" runat="server" ErrorMessage="错误"
ControlToValidate="TextBox2"></asp:CustomValidator>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button><FONT face="宋体">输入数字验证:1,没有错误,其他数字提示错误</FONT></P>
<P><FONT face="宋体">模板列当中的footer当中我也放置了一个CustomValidator验证控件,为什么他不响应</FONT>&nbsp;</P>
<P><FONT face="宋体">我用的是“OnServerValidate="validate_temp"”属性,CustomValidator1在模板列当中</FONT></P>
<P>CustomValidator2,在datagrid之外,没有问题,问题在CustomValidator1上,如何让他实现验证?</P>
<P>datagrid以及其中的数据填充,在此没有意义,我只关心模板列为什么验证控件不响应?</P>
</form>
</body>
</HTML>

解决方案 »

  1.   

    <asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage="footer错误" ControlToValidate='ItemsGrid__ctl11_TextBox1'>
    是不是这里指定的验证控件有问题?这个应该是服务器端控件的名字,也可以在运行时得到。这个也没有验证事件处理!
      

  2.   

    ControlToValidate='ItemsGrid__ctl11_TextBox1' 这个是运行后产生的客户端的ID但ControlToValidate 要求控制的是服务器端控件的名字所以不行