• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 383
  • Last Modified:

Return style elements to New Xattribute

Would like to know how to return a style element to a New Xattribute.  The following code doesn't work, but I think you can understand what I'm trying to accomplish.  It returns the "Y" or "N", but not the color.
               New XElement("td",
                                New XAttribute("align", "center"), _
                                New XAttribute("class", "standard"), _
                                New XAttribute("style", "width: 25px"), _
                                IsReprint(_item.IsReprint)), _


Public Function IsReprint(ByVal Reprint As String) As String

    If (Reprint = "Y") Then

        Return New XElement("td", _
               New XAttribute("style", "color : red"), String.Format("{0}", "Y"))
    Else
        Return New XElement("td", _
               New XAttribute("style", "color : black"), String.Format("{0}", "N"))

    End If

End Function

Open in new window

0
JRFromSoCal
Asked:
JRFromSoCal
  • 8
  • 5
1 Solution
 
JRFromSoCalAuthor Commented:
Thank you for moving into correct zone.  However, I'm not sure what moved code into snippet with some formatting means.

J.R.
0
 
JRFromSoCalAuthor Commented:
Thanks aikimark.  Next time I post code I'll be sure to hit the code button.
0
 
Bob LearnedCommented:
You are using String.Format to change the value to Y and N.

If (Reprint = "Y") Then

        Return New XElement("td", _
               New XAttribute("style", "color : red"), String.Format("{0}", "Y"))
    Else
        Return New XElement("td", _
               New XAttribute("style", "color : black"), String.Format("{0}", "N"))

    End If

Open in new window

0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
JRFromSoCalAuthor Commented:
Hi TheLearnedOne:

Thanks for responding.  I'm getting the Y and N returned with no problem.  What my goal is: is to have the Y returned in the color red and the N returned in the color black.  That piece isn't happening.  For some reason the style elements aren't being returned.  I'm not sure if I've got the logic coded correctly.  If I code the style attributes when I'm declaring the xattributes (above) it works fine.  However, I can't put any if logic in it.
0
 
Bob LearnedCommented:
Can you show me a snippet of the XML that you expect, so that I can understand?
0
 
JRFromSoCalAuthor Commented:
Hi TheLearnedOne:

Below is the snippet you requested.  This data fills a grid.  If you notice the line with the align center.  I need that Y to be red.  The code in my original posting produces this.  I'm not sure how to get the Y to display red after the grid has been loaded.

J.R.



<tr id="20192" subid="2" impressioncontrolid="0" jobid="47" partcount="1" reprintid="645" statusid="1">
    <td align="left" class="standard1" style="width: 100px">20192</td>
    <td align="left" class="standard" style="width: 25px">2</td>
    <td align="left" class="standard" style="width: 25px">KMP</td>
    <td align="center" class="standard" style="width: 25px">Y</td>
    <td align="left" class="standard" style="width: 100px">20# WHITE</td>
    <td align="left" class="standard" style="width: 100px">BLUE CHECKS</td>
    <td align="left" class="standard" style="width: 100px"></td>
    <td align="left" class="standard" style="width: 100px"></td>
    <td align="left" class="standard" style="width: 25px">0</td>
    <td align="left" class="standard" style="width: 25px">0</td>
    <td align="left" class="standard" style="width: 125px">09-24-2008</td>
    <td align="left" class="standard" style="width: 25px"></td>
  </tr>
0
 
Bob LearnedCommented:
Do you need the element to be like this?

<td align="center" class="standard" style="width: 25px;color: red">Y</td>

Open in new window

0
 
JRFromSoCalAuthor Commented:
I could produce that red Y by making the following adjustment to the xattribute declaration.

New XAttribute("style", "color:red; width: 25px;"), IsReprint(_item.IsReprint)), _

However, I need the Y's to be red and the N's to be black.  If I were to code it like the above, both results would be red.

J.R.
New XAttribute("style", "color:red; width: 25px;"), IsReprint(_item.IsReprint)), _

Open in new window

0
 
Bob LearnedCommented:
I would think something like this might work:


Dim td As New XElement("td")

Dim style As New StringBuilder("width: 25px;")

If (Reprint = "Y") Then
   style.Append("color: red;")   
Else
   style.Append("color: black;")
End If

td.Add(New XAttribute("style", style, Reprint))

Return td

Open in new window

0
 
JRFromSoCalAuthor Commented:
This looks great.  However, I'm getting the following error:  Overload resolution failed because no accessible ‘New” accepts this number of arguments.

J.R.
td.Add(New XAttribute("style", style, Reprint))

Open in new window

0
 
Bob LearnedCommented:
That's what you get when you code in the comment block (d'oh).




Public Function CreateTableCell() As XElement
        Dim td As New XElement("td")

        Dim style As New StringBuilder("width: 25px;")

        If (Reprint = "Y") Then
            style.Append("color: red;")
        Else
            style.Append("color: black;")
        End If

        td.Add(New XAttribute("style", style), Reprint)

        Return td
    End Function

Open in new window

0
 
JRFromSoCalAuthor Commented:
Works like a charm.  I tried the return type as a string and a xattribute.  For some stupid reason I never thought to try the return type as an xelement.  You're awesome TheLearnedOne.  Thanks so much for your help.

J.R.
0
 
JRFromSoCalAuthor Commented:
Works like charm.
0

Featured Post

[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

  • 8
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now