I have a template column that includes a dropdownlist and requiredfieldvalidator:
<asp:DataGrid id="dgEdit" runat="server" CssClass="CostTable" GridLines="none"
AutoGenerateColumns="false"
>
<Columns>
<asp:TemplateColumn ItemStyle-Width="335px" >
<ItemTemplate>
<asp:DropDownList ID="cboCostItem" runat="server" Autopostback="true" />
<asp:RequiredFieldValidator ID="vreqCostItem" runat="server" ControlToValidate="cboCostItem"
Text="*" Display="None" EnableClientScript="false" ErrorMessage="Cost Item is required."
/>
<asp:Textbox cssClass="txt" ID="txtOtherItem" runat="server" MaxLength="50" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cost" ItemStyle-Width="75px" >
<ItemTemplate>
<asp:Label cssClass="lbl lblBox" ID="lblCost" runat="server" Width="75px" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
In ItemDataBound, I sometimes make the first column hidden:
Protected Sub dgEdit_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgEdit.ItemDataBound
Select Case e.Item.ItemType
Case ListItemType.Item
Dim sCostTypeCode As String = DataBinder.GetPropertyValue(e.Item.DataItem, "CostTypeCode")
Me.dgEdit.Columns(0).Visible = (sCostTypeCode = "EXP")
Case Else
End Select
End Sub
When the column is hidden, though, vreqCostItem still fires when I validate the page. I thought invisible validators didn't fire. Any suggestions? Thanks in advance. -- ZLA