Any idea how one can bind binary data to a ComponentOne WebReport control?
ComponentOne has a new C1ReportViewer control and WebReport is now legacy, but they both support the same report formats. Below is an example of a report defenition with bound images. You can see the live version of it here: ASP.NET Report Demo. You will want to choose report #4 to see it. Feel free to download the latest version of Studio for ASP.NET AJAX to download the source code too.
<Report version="2.5.20061.196">
<Name>04: Bound Images</Name>
<ReportInfo />
<DataSource>
<ConnectionString>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DATADIRECTORY|\c1nwind.mdb;Persist Security Info=False</ConnectionString>
<RecordSource>Employees</RecordSource>
</DataSource>
<Layout>
<PageHeader>1</PageHeader>
</Layout>
<Font>
<Name>Verdana</Name>
<Size>9</Size>
</Font>
<Groups />
<Sections>
<Section>
<Name>Detail</Name>
<Type>0</Type>
<Height>2915</Height>
</Section>
<Section>
<Name>Header</Name>
<Type>1</Type>
<Height>1835</Height>
<BackColor>11829830</BackColor>
</Section>
<Section>
<Name>Footer</Name>
<Type>2</Type>
<Visible>0</Visible>
</Section>
<Section>
<Name>PageHeader</Name>
<Type>3</Type>
<Height>915</Height>
</Section>
<Section>
<Name>PageFooter</Name>
<Type>4</Type>
<Height>500</Height>
</Section>
</Sections>
<Fields>
<Field>
<Name>titleLbl</Name>
<Section>1</Section>
<Text>Bound Images</Text>
<Top>200</Top>
<Width>9360</Width>
<Height>600</Height>
<Align>6</Align>
<ForeColor>16777215</ForeColor>
<Font>
<Bold>-1</Bold>
<Name>Verdana</Name>
<Size>18</Size>
</Font>
</Field>
<Field>
<Name>ftrLeft</Name>
<Section>4</Section>
<Text>Now()</Text>
<Calculated>-1</Calculated>
<Top>180</Top>
<Width>4680</Width>
<Height>300</Height>
<Align>0</Align>
<Font>
<Name>Verdana</Name>
<Size>8.25</Size>
</Font>
</Field>
<Field>
<Name>ftrRight</Name>
<Section>4</Section>
<Text>"Page " & [Page] & " of " & [Pages]</Text>
<Calculated>-1</Calculated>
<Left>4680</Left>
<Top>180</Top>
<Width>4680</Width>
<Height>300</Height>
<Align>2</Align>
<Font>
<Name>Verdana</Name>
<Size>8.25</Size>
</Font>
</Field>
<Field>
<Name>LastNameCtl</Name>
<Section>0</Section>
<Text>FirstName & " " & LastName</Text>
<Calculated>-1</Calculated>
<Left>2340</Left>
<Top>180</Top>
<Width>6300</Width>
<Height>300</Height>
<Align>0</Align>
<Font>
<Bold>-1</Bold>
<Name>Verdana</Name>
<Size>11.25</Size>
</Font>
</Field>
<Field>
<Name>AddressCtl</Name>
<Section>0</Section>
<Text>Address & vbcrlf & City & vbcrlf & Country</Text>
<Calculated>-1</Calculated>
<Left>2340</Left>
<Top>720</Top>
<Width>6300</Width>
<Height>1800</Height>
<Align>0</Align>
</Field>
<Field>
<Name>Field1</Name>
<Section>0</Section>
<Left>180</Left>
<Top>180</Top>
<Width>1980</Width>
<Height>2340</Height>
<Picture>Photo</Picture>
<PictureScale>2</PictureScale>
</Field>
<Field>
<Name>Field</Name>
<Section>1</Section>
<Text>This report has a field bound to images stored in the database. The field's Picture property is set to the string "Photo", which is the name of a binary field that contains employee photos stored as embedded OLE bitmaps. Images stores as raw byte streams would also work.</Text>
<Top>990</Top>
<Width>9270</Width>
<Height>810</Height>
<ForeColor>16777215</ForeColor>
<MarginLeft>200</MarginLeft>
<CanGrow>-1</CanGrow>
</Field>
<Field>
<Name>LastNameLbl</Name>
<Section>3</Section>
<Text>NorthWind International</Text>
<Left>975</Left>
<Top>30</Top>
<Width>2610</Width>
<Height>300</Height>
<Align>3</Align>
<ForeColor>11829830</ForeColor>
<WordWrap>0</WordWrap>
<Font>
<Bold>-1</Bold>
<Name>Verdana</Name>
<Size>9</Size>
</Font>
</Field>
<Field>
<Name>divLine</Name>
<Section>3</Section>
<Top>390</Top>
<Width>9360</Width>
<Height>60</Height>
<BackColor>0</BackColor>
<BackStyle>1</BackStyle>
<PictureScale>2</PictureScale>
</Field>
<Field>
<Name>LastNameLbl1</Name>
<Section>3</Section>
<Text>Employee List</Text>
<Left>975</Left>
<Top>465</Top>
<Width>2610</Width>
<Height>375</Height>
<Align>0</Align>
<ForeColor>11829830</ForeColor>
<WordWrap>0</WordWrap>
<Font>
<Bold>-1</Bold>
<Name>Verdana</Name>
<Size>9</Size>
</Font>
</Field>
<Field>
<Name>Field2</Name>
<Section>3</Section>
<Top>30</Top>
<Width>900</Width>
<Height>810</Height>
<ZOrder>1</ZOrder>
<Picture encoding="base64">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</Picture>
<PictureScale>2</PictureScale>
</Field>
<Field>
<Name>Field3</Name>
<Section>4</Section>
<Top>150</Top>
<Width>9345</Width>
<Height>30</Height>
<BorderStyle>1</BorderStyle>
<LineSlant>1</LineSlant>
</Field>
</Fields>
Related
I have a need to set the value of a date field when the value of substate field changes only if no value already exists in the date field. Is it possible?
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<WHENCHANGED field="MyCorp.State">
<COPY from="clock" /> ** AND do this only of MyCorp.StateDate != Empty **
</WHENCHANGED>
</FIELD>
I read https://msdn.microsoft.com/en-us/library/ms194966.aspx but I am not able to find any way to implement what I need from the WIT language definition.
If you are using Visual Studio Team Services, add rules to work item is not supported now.
If you are using on-premise TFS, you can add field action in state transition, for example:
<TRANSITION from="New" to="Committed">
<REASONS>
<DEFAULTREASON value="Commitment made by the team" />
</REASONS>
<FIELDS>
<FIELD refname="starain.ScrumStarain.StateChageDate">
<WHEN field="starain.ScrumStarain.StateChageDate" value="">
<COPY from="clock" />
</WHEN>
</FIELD>
</FIELDS>
</TRANSITION>
I am modifying a workflow in TFS 2013 and have bumped into a snag. Right now, when a developer completes their work and moves the work item into 'dev complete' I set the name of the developer moving the work item to a custom field as a string:
MYCOMPANY.Agile.Lean.CodeCompleteBy
<FIELD name="Code Completed By" refname="MYCOMPANY.Agile.Lean.CodeCompleteBy" type="String" reportable="dimension" syncnamechanges="true">
<ALLOWEXISTINGVALUE />
<HELPTEXT>The developer who wrote code related to this work item.</HELPTEXT>
</FIELD>
And here is the transition:
<TRANSITION from="Development in Progress" to="Code Review">
<REASONS>
<DEFAULTREASON value="Ready for Code Review" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<DEFAULT from="currentuser" />
</FIELD>
<FIELD refname="MYCOMPANY.Agile.Lean.CodeCompleteBy">
<DEFAULT from="currentuser" />
</FIELD>
</FIELDS>
</TRANSITION>
As the process continues the item eventually reaches QA. IF the QA person finds a problem and rejects the work then I have a transition to move the work item back into the 'Development in Progress' state. All of that works fine.
The Problem
I want to re-assign the work item, upon transition from QA in Progress back to Development in Progress, back to the original developer who did the work.
<TRANSITION from="QA in Progress" to="Development in Progress">
<REASONS>
<REASON value="Requirements Not Met" />
<REASON value="Rejected" />
<DEFAULTREASON value="Failed Testing" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<DEFAULT from="MYCOMPANY.Agile.Lean.CodeCompleteBy" />
</FIELD>
</FIELDS>
</TRANSITION>
Unfortunately, when I attempt to apply my new WIT transitions it throws the following error:
TF212019: Work item tracking schema validation error at row 931, column 24: The 'from' attribute is invalid - The value 'MYCOMPANY.Agile.Lean.CodeCompleteBy' is invalid according to its datatype 'http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typelib:CopyFrom' - The Enumeration constraint failed.
TF237070: Importing the definition failed. The definition you are trying to import did not validate against the schema. Edit the definition, then try to import it again.
I see that this is an Enumeration constraint issue, but I'm not familiar enough with TFS internal workings to know how to get around the problem.
Does anyone have a slick way of accomplishing what I am trying to do (even if I just need a completely new approach)? I may just be going down the wrong path altogether.
Thanks!
Instead of using the default which will simply try and set that as the value, try using the Copy rule.
Something like this:
<TRANSITION from="QA in Progress" to="Development in Progress">
<REASONS>
<REASON value="Requirements Not Met" />
<REASON value="Rejected" />
<DEFAULTREASON value="Failed Testing" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="field" field="MYCOMPANY.Agile.Lean.CodeCompleteBy" />
</FIELD>
</FIELDS>
</TRANSITION>
Update the syntax like following:
<DEFAULT from="field" field="MYCOMPANY.Agile.Lean.CodeCompleteBy"/>
Refer to this link for details: Define a default value or copy a value to a field
I have a user who is attempting to change the State of a TFS Change Request from Development to Testing but when he presses Save gets the following error:
Save failed: The field 'Changed By' contains a value that is not in the list of supported values
From what I can work out (please correct me if I'm wrong) Changed By relates to the History tab showing what has changed on the item.
So I've Exported the Work Item Types for our project, and opened the XML for Change Requests. When I searched for Test the State is listed as this:
<STATE value="Test">
<FIELDS>
<FIELD refname="System.AssignedTo">
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="[project]\Contributors" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</STATE>
And the Transition from Development to Test is as follows:
<TRANSITION from="Development" to="Test">
<REASONS>
<DEFAULTREASON value="Signed Off" />
<REASON value="Executive Signed Off" />
</REASONS>
<FIELDS>
<FIELD refname="System.ChangedBy">
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="[project]\Owners" />
</ALLOWEDVALUES>
</FIELD>
<FIELD refname="System.AssignedTo">
<REQUIRED />
</FIELD>
</FIELDS>
</TRANSITION>
I have checked both groups ([project]\Owners and [project]\Contributors). They are not a member of the Contributors group, but I checked another user who isn't having this issue and they are not either, so I think I can rule out that permissions group? And the Owners group has them listed (albeit under the group for their team) so I think that is correct.
The Field called ChangedBy populates from the Owners group and the user appears in that list (when checked from another point).
What could be causing this save issue? Am I missing something obvious?
Based on that XML, that says that only people in the Contributors group can save a WI in the Test state. If your user isn't a contributor that explains the error.
Try adding your user the Contributor group and try again.
I want to use a custom datetime attribute to track, when an item entered a given state for the first time (serverdefault:clock).
To avoid later manipulation, this custom field at the same time should be set to readonly for everyone.
It seems however that in all combinations I come up with the "readonly" takes precedence and immediat es ly blocks the "serverdefault" that seems to be executed with the rights of the user iniziating tha transition.
For e.g. "created date" however the behavior seems possible for the system itself ...
Is there a way to achieve the same behavior for custom fields?
You can define your field like this:
<FIELD name="Custom Date" refname="My.CustomDate" type="DateTime">
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
and then add this XML to the TRANSITION node for the given state:
<TRANSITION from="Resolved" to="Closed">
<FIELDS>
<FIELD refname="My.CustomDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
</TRANSITION>
Is it possible to assign DEFAULT rule for DateTime Field while adding a Work Item in TFS? But not using CLOCK value. Giving some Default Date.
Yes, you can do this by hardcoding the value in the Work Item Type Definition. In the appropriate TRANSITION element under the FIELDS\FIELD element for that field, instead of using ServerDefault and clock which you have probably seen like this:
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
try doing this:
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<COPY from"value" value="01-Feb-2014" />
</FIELD>
It is possible, try this:
<FIELD name="Custom Date" refname="Custom.Date" type="DateTime">
<DEFAULT from="value" value="2100-01-01" />
</FIELD>
The date that will be displayed is a day before of whatever date you're setting.