GridView - Retrieve invisible column information

Discussion in 'ASP .Net' started by Mel, Jul 25, 2007.

  1. Mel

    Mel Guest

    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.
     
    Mel, Jul 25, 2007
    #1
    1. Advertising

  2. Mel

    David Wier Guest

    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.

    --
    David Wier
    MVP/ASPInsider
    http://aspnet101.com
    http://iWritePro.com



    "Mel" <> wrote in message
    news:...
    >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, Jul 25, 2007
    #2
    1. Advertising

  3. Mel

    Mel Guest

    On Jul 25, 2:15 pm, "David Wier" <>
    wrote:
    > 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.
    >
    > --
    > David Wier
    > MVP/ASPInsiderhttp://aspnet101.comhttp://iWritePro.com
    >
    > "Mel" <> wrote in message
    >
    > news:...
    >
    > >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.


    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.
     
    Mel, Jul 25, 2007
    #3
  4. 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.

    --
    Eliyahu Goldin,
    Software Developer & Consultant
    Microsoft MVP [ASP.NET]
    http://msmvps.com/blogs/egoldin


    "Mel" <> wrote in message
    news:...
    > 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.
    >
     
    Eliyahu Goldin, Jul 25, 2007
    #4
  5. 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

    "Mel" wrote:

    > 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.
    >
    >
     
    =?Utf-8?B?U2VyZ2V5IFBvYmVyZXpvdnNraXk=?=, Jul 26, 2007
    #5
  6. Mel

    Mel Guest

    On Jul 25, 5:57 pm, "Eliyahu Goldin"
    <> 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
    > the controls with css rule display:none.
    >
    > --
    > Eliyahu Goldin,
    > Software Developer & Consultant
    > Microsoft MVP [ASP.NET]http://msmvps.com/blogs/egoldin
    >
    > "Mel" <> wrote in message
    >
    > news:...
    >
    > > 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.


    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)
     
    Mel, Jul 26, 2007
    #6
  7. Sure, somethink like

    <asp:BoundColumn DataField="MyField" >
    <ItemStyle CssClass="Invisible"></ItemStyle>
    <HeaderStyle CssClass="Invisible"></HeaderStyle>
    </asp:BoundColumn>

    and

    ..Invisible{display:none}

    somewhere in styles.

    --
    Eliyahu Goldin,
    Software Developer
    Microsoft MVP [ASP.NET]
    http://msmvps.com/blogs/egoldin
    http://usableasp.net


    "Mel" <> wrote in message
    news:...
    > On Jul 25, 5:57 pm, "Eliyahu Goldin"
    > <> 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
    >> the controls with css rule display:none.
    >>
    >> --
    >> Eliyahu Goldin,
    >> Software Developer & Consultant
    >> Microsoft MVP [ASP.NET]http://msmvps.com/blogs/egoldin
    >>
    >> "Mel" <> wrote in message
    >>
    >> news:...
    >>
    >> > 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.

    >
    > 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, Jul 26, 2007
    #7
  8. Mel

    Mel Guest

    On Jul 26, 1:02 am, Sergey Poberezovskiy
    <> wrote:
    > 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
    >
    > "Mel" wrote:
    > > 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.


    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, Jul 26, 2007
    #8
  9. Mel

    Mel Guest

    On Jul 26, 9:01 am, Mel <> wrote:
    > On Jul 26, 1:02 am, Sergey Poberezovskiy
    >
    >
    >
    > <> wrote:
    > > 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

    >
    > > "Mel" wrote:
    > > > 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.

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


    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
     
    Mel, Jul 26, 2007
    #9
  10. Mel

    Hardeep Kaur Guest

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



    *** Sent via Developersdex http://www.developersdex.com ***
     
    Hardeep Kaur, Aug 9, 2007
    #10
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?am9l?=

    access invisible column inside gridview

    =?Utf-8?B?am9l?=, Sep 28, 2006, in forum: ASP .Net
    Replies:
    2
    Views:
    5,332
    Eliyahu Goldin
    Sep 28, 2006
  2. GridView column invisible

    , Jun 22, 2007, in forum: ASP .Net
    Replies:
    6
    Views:
    14,299
    emre2008
    May 10, 2008
  3. Mariano
    Replies:
    2
    Views:
    481
    =?Utf-8?B?RG91ZyBTYWxvbW9u?=
    Jul 19, 2007
  4. Andy B
    Replies:
    5
    Views:
    597
    Andy B
    May 29, 2008
  5. Julia B
    Replies:
    2
    Views:
    3,926
    Julia B
    Oct 2, 2008
Loading...

Share This Page