Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / May 2008

Tip: Looking for answers? Try searching our database.

problem with e.Row.Cells()  of gridview

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Chris - 08 May 2008 22:21 GMT
Hi,

i want to make the forecolor of values into a gridview red but only when
they equals 'n'.

<asp:GridView ID="GridView1" runat="server"
       DataKeyNames="hour,place" DataSourceID="SqlDataSource1" >
      <Columns>
           <asp:CommandField ShowEditButton="True"/>
           <asp:BoundField DataField="place" HeaderText="place"
ReadOnly="True" />
           <asp:BoundField DataField="hour" HeaderText="hour"
ReadOnly="True" />

           <asp:TemplateField HeaderText="theday">
                   <EditItemTemplate>
              <asp:DropDownList ID="DropDownList1" SelectedValue='<%#
Bind("theday") %>' runat="server">
              <asp:ListItem Text="y" Value="y"></asp:ListItem>
               <asp:ListItem Text="n" Value="n"></asp:ListItem>
              </asp:DropDownList>
                   </EditItemTemplate>
                   <ItemTemplate>
            <asp:Label ID="Label2" runat="server" Text='<%# Bind("theday")
%>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>

     </Columns>
</asp:GridView>

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewRowEventArgs) Handles
GridView1.RowDataBound

       If e.Row.RowType = DataControlRowType.DataRow Then
           Dim m As String
           m = e.Row.Cells(3).Text
          If m = "n" Then
               e.Row.Cells(3).ForeColor = Drawing.Color.Red
           End If
      End If
   End Sub

The values are correctly rendered, i can update etc ... but the forecolor
remains black. Is this due to the template?
Thanks for help
Chris
Chris - 09 May 2008 07:49 GMT
I tested with this line:
response.write(e.Row.Cells(3).Text) which gives nothing ....
but, as i wrote, the gridview renders correctly the values.

> Hi,
>
[quoted text clipped - 44 lines]
> Thanks for help
> Chris
Mark Rae [MVP] - 09 May 2008 11:10 GMT
> I tested with this line:
> Response.Write(e.Row.Cells(3).Text) which gives nothing ....

Judging by your markup, that would be correct...

> but, as I wrote, the GridView renders correctly the values.

No doubt, but not in the way you think.

Please clarify which of the columns in the GridView (you think) corresponds
to e.Row.Cells(3)...

Signature

Mark Rae
ASP.NET MVP
http://www.markrae.net

Chris - 09 May 2008 16:49 GMT
Thanks for replying.
Well, i think that:
e.Row.Cells(0) is the editbutton
e.Row.Cells(1) is field 'place' (tested with response.write)
e.Row.Cells(2) is field 'hour' (tested with response.write)
so e.Row.Cells(3) is field 'theday'

May i know what you think i think?
Thanks

>> I tested with this line:
>> Response.Write(e.Row.Cells(3).Text) which gives nothing ....
[quoted text clipped - 7 lines]
> Please clarify which of the columns in the GridView (you think)
> corresponds to e.Row.Cells(3)...
Chris - 09 May 2008 17:01 GMT
I found it:

i need to use e.Row.Cells(3).FindControl("label1")

> Thanks for replying.
> Well, i think that:
[quoted text clipped - 17 lines]
>> Please clarify which of the columns in the GridView (you think)
>> corresponds to e.Row.Cells(3)...
Mark Rae [MVP] - 09 May 2008 17:12 GMT
[top-posting corrected]

>> Please clarify which of the columns in the GridView (you think)
>> corresponds to e.Row.Cells(3)...

> so e.Row.Cells(3) is field 'theday'

You mean this: ?
<asp:Label ID="Label2" runat="server" Text='<%# Bind("theday")
%>'></asp:Label>

If so, then e.Row.Cells(3).Text is always going to return an empty string.

Why? Because the field in question doesn't contain any text. It contains an
<asp:Iabel> webcontrol, which isn't the same thing at all as far as ASP.NET
is concerned...

Try this:

Dim MyLabel As Label = e.Row.Cells(3).FindControl("Label2")
Response.Write(MyLabel.Text)

The syntax may not be 100% correct as I never go anywhere near VB.NET...

Signature

Mark Rae
ASP.NET MVP
http://www.markrae.net


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.