Solved

How do I format a string in databound control property?

Posted on 2006-06-15
5
762 Views
Last Modified: 2012-06-21
For the life of me I can't figure out how to format a string, when I bind a forms text property to an item in bindingsource (which is then linked to a data table).

Heres my line of code:
Me.DataBindings.Add("text", bsBroker, "company", True, DataSourceUpdateMode.Never, "", "??????")

I cant figure out the formatstring parameter, or if I have figured it out, it's not working.....
All I want to do is put a string prefix and/or maybe a suffix after the field data (ie. "Form Label - company")
The data bind works fine, but all I get is the company field data, no formatted text.

Im using VS2005, Any help appreciated.
0
Comment
Question by:Jimby_Aus
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
5 Comments
 
LVL 4

Expert Comment

by:BradB3030
ID: 16922168
I'm confused about what you're asking, could you reply with a few examples?

like if...
companyField = "compOne"

do you want something like...
result = "Form Label - compOne" ?

if so, just do something like this...
result = "Form Label - " & companyField

otherwise, please post a better example so I can help you better.
0
 
LVL 1

Author Comment

by:Jimby_Aus
ID: 16922208
I have a textbox with the .text property bound to a bindingsource field item called "company"
If the datasource string for the field "company" is "Microsoft" for example, then I want to know how to automatically have the bound textbox text property display "Broker - Microsoft".

I posted the line of code in question, the question marks represent the databinding parameter "formatstring", I want to know what the proper formatstring is to achieve this affect (assuming there is one).





0
 
LVL 4

Expert Comment

by:BradB3030
ID: 16922392
ahh, I understand now I think...

You should use format string if you have needs like white space in between the "Broker - " and "Microsoft" (in your example)

Some examples of this.  The arguments that are formatted are placed between vertical bar characters (|) to highlight the resulting alignment.  You don't need them for anything, it's just to display the example better.

1. FormatFName = String.Format("First Name = |{0,10}|", myFName)
2. FormatLName = String.Format("Last Name = |{0,10}|", myLName)
3. FormatPrice = String.Format("Price = |{0,10:C }|", myInt)
4. FormatFName = String.Format("First Name = |{0,-10}|", myFName)  <-- Note the minus sign for the different output
5. FormatLName = String.Format("Last Name = |{0,-10}|", myLName)
6. FormatPrice = String.Format("Price = |{0,-10:C }|", myInt)

1. First Name = |          Fred|
2. Last Name = |         Opals|
3. Price = |           $100.00|
4. First Name = |Fred      |
5. Last Name = |Opals     |
6. Price = |$100.00   |


At any rate, this doesn't seem totally necessary and I might still just go "Broker - " & company instead of using Format String if I were you...

Good luck.
0
 
LVL 34

Accepted Solution

by:
Sancler earned 500 total points
ID: 16922980
I don't think you can do what you want.  The sort of formatting that is envisaged with the FormatString that you can attach to a Binding is, for want of a better expression, "simple" formatting.  Have a look at this

http://msdn2.microsoft.com/en-us/26etazsy.aspx

What I think you are seeking to do is what is referred to in the fourth paragraph of that as "composite formatting" which, as it says "uses one or more format strings to EMBED one or more formatted values in a result string" - I have added the EMPHASIS.  If you follow the link from that page to "Composite Formatting"

http://msdn2.microsoft.com/en-us/txafckwd.aspx

it makes clear that "The .NET Framework composite formatting feature takes a list of OBJECTS and a composite format string as input" - again EMPHASIS added.

Now, as I understand it, the problem that you face with trying to use this sort of composite formatting for a Binding's FormatString is that it accepts only a String: it has no capacity to accept, as well, the OBJECT (or list of objects) which is to replace the placeholders in the composite format string.  If the object/value to which the binding relates is, for example, a DateTime then that can be formatted just with a String - e.g. "dd/MM/yyyy hh:mm" - and the FormatString of the Binding object will accept it.  But to do what you want to do - that is, add some standard text before a value - you would need String.Format("Form Label - {0}", company) where company was the value that you wanted substituting for the {0}.  But that involves company as an object, or value, not as a String.  And because the FormatString property of the Binding object will only accept a String, it will either produce an error, or nothing will happen.

An alternative would be to add an expression column to your datatable, with its .Expression set to something like "'Form Label - ' + company" and bind your form .Text to that.

Roger
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
There's a multitude of different network monitoring solutions out there, and you're probably wondering what makes NetCrunch so special. It's completely agentless, but does let you create an agent, if you desire. It offers powerful scalability …

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question