I have 10 columns total. 3 of them are invisible. The rest are read-
only BoundFields, 3 of which are editable fields using
TemplateFields. Upon editing, I want to validate what the user enters
against one of those invisible columns. How do I accomplish this?
The code below that I attempted just returns an empty string when I
try to retrieve the invisible column data:
gvParts.Rows(e.RowIndex).Cells(8).Text
Any help would be greatly appreciated.
David Wier - 25 Jul 2007 20:15 GMT
If they're always going to be invisible, as such, you can't access them
during run-time.
to get around that, you can copy the labels or textboxes from the invisible
columns into visible columns, making the labels/textboxes invisible - then,
you can programmatically use the FindControl method in that particular row,
to find you data to validate against.

Signature
David Wier
MVP/ASPInsider
http://aspnet101.com
http://iWritePro.com
>I have 10 columns total. 3 of them are invisible. The rest are read-
> only BoundFields, 3 of which are editable fields using
[quoted text clipped - 6 lines]
>
> Any help would be greatly appreciated.
Mel - 25 Jul 2007 20:43 GMT
On Jul 25, 2:15 pm, "David Wier" <davidw...@davidwier.nospam.com>
wrote:
> If they're always going to be invisible, as such, you can't access them
> during run-time.
[quoted text clipped - 17 lines]
>
> > Any help would be greatly appreciated.
Yuck, but I'll try anything at this point. So maybe I could add an
invisible drop-down box that is bound to the same AccessDataSource
that my GridView uses... Hmmm. I'll give it a whirl.
Thanks.
Eliyahu Goldin - 25 Jul 2007 22:56 GMT
Server controls with Visible=false don't render to client and don't come
back on postbacks. A simple work around is to leave Visible=true and hide
the controls with css rule display:none.

Signature
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
> I have 10 columns total. 3 of them are invisible. The rest are read-
> only BoundFields, 3 of which are editable fields using
[quoted text clipped - 6 lines]
>
> Any help would be greatly appreciated.
Mel - 26 Jul 2007 13:38 GMT
On Jul 25, 5:57 pm, "Eliyahu Goldin"
<REMOVEALLCAPITALSeEgGoldD...@mMvVpPsS.org> wrote:
> Server controls with Visible=false don't render to client and don't come
> back on postbacks. A simple work around is to leave Visible=true and hide
[quoted text clipped - 15 lines]
>
> > Any help would be greatly appreciated.
Do you have an example of how to implement the display:none CSS rule?
I attempted it yesterday and I didn't see any difference; the columns
were still visible.
Mel
(Using Visual Studio 2005, Asp.net 2.0, Visual Basic, WinXP Pro SP2)
Eliyahu Goldin - 26 Jul 2007 14:28 GMT
Sure, somethink like
<asp:BoundColumn DataField="MyField" >
<ItemStyle CssClass="Invisible"></ItemStyle>
<HeaderStyle CssClass="Invisible"></HeaderStyle>
</asp:BoundColumn>
and
.Invisible{display:none}
somewhere in styles.

Signature
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
> On Jul 25, 5:57 pm, "Eliyahu Goldin"
> <REMOVEALLCAPITALSeEgGoldD...@mMvVpPsS.org> wrote:
[quoted text clipped - 24 lines]
> Mel
> (Using Visual Studio 2005, Asp.net 2.0, Visual Basic, WinXP Pro SP2)
Sergey Poberezovskiy - 26 Jul 2007 07:02 GMT
Mel,
It looks like your three column are the keys for the grid - you could
utilize built in functionality - DataKeyNames property (comma separated) -
and do not have to create columns for them.
then on the postback you can use DataKeys[e.RowIndex] - it will return your
three values
> I have 10 columns total. 3 of them are invisible. The rest are read-
> only BoundFields, 3 of which are editable fields using
[quoted text clipped - 6 lines]
>
> Any help would be greatly appreciated.
Mel - 26 Jul 2007 15:01 GMT
On Jul 26, 1:02 am, Sergey Poberezovskiy
<SergeyPoberezovs...@discussions.microsoft.com> wrote:
> Mel,
>
[quoted text clipped - 14 lines]
>
> > Any help would be greatly appreciated.
Okay cool. So now I can retrieve the 3 invisible fields using
DataKeys but how do I retrieve the contents of a Template field text
box (txtLength)? I tried FindControl but it always returns nothing,
maybe I'm using it wrong? The GridView control is in a table which is
on the Content1 section.
Mel - 26 Jul 2007 17:06 GMT
> On Jul 26, 1:02 am, Sergey Poberezovskiy
>
[quoted text clipped - 23 lines]
> maybe I'm using it wrong? The GridView control is in a table which is
> on the Content1 section.
I figured it out. THANKS to everyone for your help! I explained what
I did to solve the problem below in case anyone else is interested.
Instead of attempting to retrieve Invisible column data (which doesn't
work upon PostBack) I removed the columns from the DataView and I used
the DataKeys property instead:
gvParts.DataKeys(e.RowIndex).Item("StretchOut")
gvParts.DataKeys(e.RowIndex).Item("NumBends")
gvParts.DataKeys(e.RowIndex).Item("SN")
To retrieve a template field in my GridView control I used the
FindControl method:
Dim txtLengthBox As TextBox =
gvParts.Rows(e.RowIndex).Cells(7).FindControl("txtLength")
The Entire Code is here:
Protected Sub gvParts_RowUpdating(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles
gvParts.RowUpdating
Dim txtLengthBox As TextBox =
gvParts.Rows(e.RowIndex).Cells(7).FindControl("txtLength")
Dim CusVal As CustomValidator =
gvParts.Rows(e.RowIndex).Cells(7).FindControl("cvLength")
If Trim(txtLengthBox.Text) <> "120" And
gvParts.DataKeys(e.RowIndex).Item("StretchOut") = "48" And
gvParts.DataKeys(e.RowIndex).Item("NumBends") = "0" Then
'Do not allow the user to change the length of a sheet of
material. Sheets are always 120 inches in length.
CusVal.IsValid = False
txtLengthBox.Text = e.OldValues("Length")
e.NewValues("Length") = e.OldValues("Length")
Else
End If
End Sub
Hardeep Kaur - 09 Aug 2007 16:04 GMT
<asp:GridView ID="View_Applicants" runat="server"
AutoGenerateColumns="False" CellPadding="4" Font-Size="12pt"
ForeColor="#333333" GridLines="None" Width="360px">
<Columns>
<asp:BoundField DataField="Applicant_LName"
HeaderText="Last Name" />
<asp:BoundField DataField="Applicant_FName"
HeaderText="First Name" />
<asp:BoundField DataField="Applicant_Email"
HeaderText="Email" />
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True"
ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True"
ForeColor="#333333" />
<HeaderStyle BackColor="#FF8000" Font-Bold="True"
ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775"
/>
</asp:GridView>