|
I have just tried it and it works, thanks! I've got one (well, two) more questions, though:
1. Regardless of the value of ParentRowLabelStyle property, the ParentRow always displays the table name as well as all columns. What am I doing wrong?
2. When users click the "+" button in the parent table, the name of the relation appears and once they click on it, they are navigated to the chlid table. Is it possible to display something else in place of the relation name (something more user friendly) or not?
Thanks again!
rado
Radoslav Bielik
http://www.neomyz.com/poll [^] - Get your own web poll
|
|
|
|
|
Radoslav Bielik wrote:
1. Regardless of the value of ParentRowLabelStyle property, the ParentRow always displays the table name as well as all columns. What am I doing wrong?
Try setting DataGrid.ParentRowsVisible to false .
Radoslav Bielik wrote:
2. When users click the "+" button in the parent table, the name of the relation appears and once they click on it, they are navigated to the chlid table. Is it possible to display something else in place of the relation name (something more user friendly) or not?
Why don't you give the relationship a better name? That'd be the easiest way. Otherwise, changing this will be either impossible (without messy reflection) or difficult, since those types of things are wrapped up into private methods - perhaps even nested classes - of the DataGrid control. Learn to read Intermediate Language (IL) - the language to which all .NET languages compile - and use ildasm.exe that comes with the .NET Framework SDK to see what's going on inside it if you want to go down this route. The first suggestion would be far easier, though.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath Stewart wrote:
Try setting DataGrid.ParentRowsVisible to false.
I did this but it didn't help - when I click the button to show the parent row, it contains all information even if
DataGrid.ParentRowsLabelStyle=DataGridParentRowsLabelStyle.None<br /> I already thought that I misunderstood the concept or something, but then I tried to find the ParentRowsLabelStyle in the Designer Generated Code, but it wasn't there, and when I manually added the ParentRowsLabelStyle initialization to the form constructor, it started to work as expected, but I don't know why it wasn't there when I was changing it's value in the designer. Strange.
[Update]
I've tried to add the ParentRowsLabelStyle initialization into the designer generated code, and then tried to change the value of this property in the designer, and it disappeared from the source. I will rather keep it in the form constructor.
[/Update]
Heath Stewart wrote:
Why don't you give the relationship a better name? That'd be the easiest way.
I already did, I just wanted to know if there isn't a better and if I'm not doing it the wrong way Thanks!
rado
Radoslav Bielik
http://www.neomyz.com/poll [^] - Get your own web poll
|
|
|
|
|
I have written a trace listener that has at least one worker thread to process an internal buffer. When the Close method is called explicitly from within the hosting application, everthing is fine and dandy, but if i add the TraceListener from the system.diagnostics section of the config file, the Close method doesn't ever get called. Does anyone have any idea when that method gets called when added through the config file?
|
|
|
|
|
The correct solution is probably to implemente the IDisposable interface on your trace listener. When that object is disposed, you can call the Close method yourself.
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
Hmm - turns out a i forgot a vital piece of infornmation.
The hosting application hangs when this problem occurs. I implement the Dispose( bool ) method for just this issue, but it never gets to a point where that would be feasible. It appears, at first glance, that the framework is looking for all the threads owned by the hosting app to finish as its trigger for releasing the dynamic config listeners.
It becomes a catch-22, it won't call Close until all threads complete, but I can't know to complete my thread without Close being called. :P
Ugh - I really don't want to require explicit addition and closure of this tracelistener, even though it would be understandable concidering the purpose and goal of this specific listener implementation.
|
|
|
|
|
Cromwell wrote:
I implement the Dispose( bool )
That looks somewhat suspicious to me. The IDisposable interface only has Dispose() as a member. If you are not implementing the actual members of IDisposable, give that a try first.
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
True, i haven't implementing the raw Dispose() yet. I'll give it a try, but i'm not holding out hope.
Dispose( bool ) is the de-facto method for classes that have finalizers and is implemented by a number of classes, including the TraceListener base class.
|
|
|
|
|
yup - can't override the TraceListener.Dispose method. You have to override the Dispose( bool ) method which i've done and had no luck with. Stupid Dispose!
|
|
|
|
|
OK - So I figured out a solution, but I have to determine the impact. The worker thread IsBackground property had been set to false, mainly to increase performance. (This is supposed to be part of a high-performance, low impact auditing framework we are writing) I'm going to make the assumption that the Trace framework, waits for all non-background threads to complete before calling close.
Thanks for the help...
|
|
|
|
|
Glad you found a solution, but I still question the Dispose use. Have you actually put a " : IDisposable" at the end of your class definition? If not, you can do that and then supply at minumum an IDisposable.Dispose() implementation. This will be separate from any dependency upon being able to inherit from TraceListener, but you may need to call the base.Dispose() method to properly clean things up.
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
Hello,
I have created a non-rectangular form using a GraphicsPath and regions.
Now, I have code that can move the form, but I do not know how to resize the form.
Do I have to somehow know when the user hovers the mouse over the edge of the form to resize it?
Can anyone help me out?
Thanx a lot
-Flack
|
|
|
|
|
I assume that you are already handling the WM_NCHITTEST message in order to move the form. If so, you need to also define a routine that can detect whether the mouse is in one of the 8 different edge areas of the window. WM_NCHITTEST documentation lists the possible return values. (If you are not handling WM_NCHITTEST, you'll need to do these things manually, but the principles are the same.)
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
Hello there,
I have a problem : I have to display large amounts of pictures in 1 Container (in my situation a Panel).So far so good...But when I start to zoom on this Panel the Height property can only get to 32767 (because its an int-type). So I can't vieuw the entire content any more... (its parent is a scrollable control)
Also when I zoom out again it seems that i lose some of (or parts of) my pictures that where outside of the reachable area.
Is there a way to solve/go round this problem?
I hope someone can help me...
Greetings Jakke
|
|
|
|
|
Generally, when you run into the limitations of the standard control usage, you have to write custom code. I can imagine two major ways around this.
1) Manage the Height property differently, never letting it pass the maximum size. Handle the zoom settings separately, ignoring the items that are not visible. (Probably the easiest solution.) Pay attention to cases where this could cause problems and write code to prevent them.
2) Create a custom solution in which you draw everything yourself, letting you use any sort of number to handle the height and other values. (Lots of work in most cases.)
John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.
|
|
|
|
|
The API call
StringFormat.SetMeasurableCharacterRanges(CharacterRange[])
will throw an Overflow exception if the CharacterRange[] parameter is greater than 32 elements long. For instance, the following code will throw an exception:
CharacterRange[] ranges = new CharacterRange[33];
StringFormat format = new StringFormat();
format.SetMeasurableCharacterRanges(ranges);
However, if ranges[] was <= 32 elements long, no exceptions are thrown. All of this is regardless of whether each CharacterRange element is initialized (of course, .NET initializes value types anyway). Looking throught the MSDN documentation, I see no mention of a length limit for the .SetMeasurableCharacterRanges method.
So I have 2 questions: is this a known bug or expected functionality? And what other options do I have for retrieving the character positions of text?
The graveyards are filled with indispensible men.
|
|
|
|
|
The documentation I found is a bit confusing. The VB version of the SetMeasurableCharacterRanges method takes one parameter, an array of type CharacterRange. The C# version takes two parameters:
Status SetMeasurableCharacterRanges(
INT rangeCount,
const CharacterRange *ranges
);
The first being the number of elements in the array pointed to by the second parameter, a pointer to an array of type CharacterRange.
The docs I found doesn't say that either parameter is optional, so I'd start there...
RageInTheMachine9532
|
|
|
|
|
Not sure what documentation you're looking at there, but .NET's SetMeasurableCharacterRanges takes only a single parameter, which is not optional.
I posted this question on an MSDN newsgroup and got the following reply:
We hit the same problem, and basically it is an undocumented 'feature'
To get around this limitation, test each character at a time, or in batches
of 32 characters
James
So it seems this is a 'feature'...? Really strange why it would be limited to 32 characters.
The graveyards are filled with indispensible men.
|
|
|
|
|
I wasn't reall impresed with the quality of what I found, but it's in the VS.NET2K3 documentation that came with the Enterprise version. Paste this: ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/gdicpp/gdi+/gdi+reference/classes/stringformatclass/stringformatmethods/setmeasurablecharacterranges.htm into the help browser address bar to see what I was looking at. It gives a C# example that takes TWO parameters. It could be that these docs were updated in the Oct'03 update to the VS documentation. I haven't been able to get that update installed...
SetMeasureableCharacterRanges is also not limited to 32 characters, but 32 character ranges.
RageInTheMachine9532
|
|
|
|
|
Hello!
I do not know how to open CD-ROM! Thanks.
|
|
|
|
|
Push the open/close button on the outside of the drive.
- Nick Parker My Blog
|
|
|
|
|
Could you provide some pictures explaining this?
Perl combines all the worst aspects of C and Lisp: a billion different sublanguages in one monolithic executable. It combines the power of C with the readability of PostScript. -- Jamie Zawinski
|
|
|
|
|
|
You get the Reply Of Today gift.
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
Mazdak wrote:
You get the Reply Of Today gift.
- Nick Parker My Blog
|
|
|
|