|
Hi guys
[The senario]
i have a form (FrmUsers) that selects some columns from my userTable and then databinds it to a DataGridView on creation
when the user double clicks a row in the datagrid view an instance of (FrmAddUser) displays with the selected users details filled in
then when you close (FrmAddUser) after editing, the user the data is updated to my db
[the question]
how do i tell (FrmUsers)with the DataGridView that instantiated the AddUser Window that it has to redo the data binding as to reflect the changes?
thanx
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
Hello,
Tasks like this are mostely done with modal Windows called with ShowDialog().
The DialogResult of FrmAddUser tells FrmUsers if he has to Update his values.
The initialized Properties could be passed over the constructor from FrmAddUsers.
The return values could be passed over properties from FrmAddUsers.
pseudocode:
using(FormAddUser addUser = new FormAddUser(object initValues))
{
if(addUser.ShowDialog() == DialogResult.OK)
{
object actUserInfos = addUser.ActUserInfos;
...
}
}
You should also think of, if it makes sence to instanciate your FormAddUser always new.
All the best,
Martin
modified on Friday, February 15, 2008 6:29 AM
|
|
|
|
|
thanx martin!
never thaught of that... YOU ROCK as usual
TTYL
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
Glad I could help!
All the best,
Martin
|
|
|
|
|
dude.. its not working
once the users details is updated i do (this.DialogResult = DialogResult.OK; ) in(FrmAdduser)
and then in (FrmUsers) i hav this
<br />
FrmAddUser frmAddUser = new FrmAddUser(sqlConn);<br />
frmAddUser.MdiParent = this.MdiParent;<br />
frmAddUser.ShowDialog();<br />
<br />
if (frmAddUser.DialogResult == DialogResult.OK)<br />
{<br />
dataBindDataGridView();;<br />
}<br />
but the if never returns true... any sugestions?
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
Hello,
You have to set the property somehow yourselfe.
Normaly you have a Accept and an Cancel Button on your Form.
the Buttons have a Property called "DialogResult", which you have to set accordingly.
The Form has two properties called "AcceptButton" and "CancelButton", which you also have to set.
Look at the Doku [^] for more infos about that!
All the best,
Martin
|
|
|
|
|
but im i not setting the property when i do this.DialogResult = DialogResult.OK; in frmAddUser?
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
HarveySaayman wrote: but im i not setting the property when i do this.DialogResult = DialogResult.OK; in frmAddUser?
???
If you set the DialogResult property of frmAddUser like this, it should have this value when you close the Form.
All the best,
Martin
|
|
|
|
|
yes, when the user clicks the <update> button (which is a toolstrip button) my program updates the database and once that was successful i do this.DialogResult = DialogResult.OK;
and in FrmUsers i have..
<br />
FrmAddUser frmAddUser = new FrmAddUser(sqlConn);<br />
frmAddUser.MdiParent = this.MdiParent;<br />
frmAddUser.ShowDialog();<br />
<br />
if (frmAddUser.DialogResult == DialogResult.OK)<br />
{<br />
dataBindDataGridView();;<br />
}<br />
but its not working...
i put a MessageBox inside the if to see if it goes in there but it doesnt...
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
Are you closing the Form frmAddUser over the 'X' of the Form?
This would set the property back to .Cancel!
You really should work with the Accept and CancelButtons properties like it was shown in the msdn example!
All the best,
Martin
|
|
|
|
|
nope, all the forms in my app has no controll box, therefor no X!
i am however closing using this.close();
i cant use normal buttons because of our standards, i must use a toolstrip button
thanx martin
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
Hmmmm,
You are not setting the property after calling Close(), are you? OK, after your next post
Apart from that you should use Hide() instead of Close().
If you are using the using-block it's ok then, if not you have to call Dispose()!
All the best,
Martin
|
|
|
|
|
im so stupid! i had that code on the wrong event!
anyway... now im getting a "Form that is not a top-level form cannot be displayed as a modal dialog box. Remove the form from any parent form before calling showDialog." exception
im assuming its cuz frmAddUser has an MDI Parent. and it must be like that (standards once again). is there any way around that?
thanx
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
think BIG and kick ASS
you.suck = (you.passion != Programming)
|
|
|
|
|
HarveySaayman wrote: is there any way around that?
Not that I know!
I think you would have to use Show() instead and handle the Closing[^] event of the frmAddUser then!
Nice WE!
All the best,
Martin
|
|
|
|
|
I'm working with C# in ASP.NET on a custom control that converts strings into images (through httphandler) - that works fine, except for 'FontSize'. First I convert FontSize to a string parameter, but after that I can't find a way to convert it into a float-value (to build a Font). In httphandler:
<br />
String sFontSize = context.Request.Params.Get("FontSize");
int iFontSize = Convert.ToInt32(sFontSize);
float iFontSize = float.Parse(sFontSize);
float iFontSize;<br />
if (float.TryParse(sFontSize, out iFontSize))
FontUnitConverter fuc = new FontUnitConverter();<br />
FontUnit fu= FontUnit.Parse(sFontSize);<br />
float flt = (float)fuc.ConvertTo(fu, typeof(float));
<br />
Font fFont = new Font(sFontName, iFontSize);<br />
Anyone any ideas?
Thanx, Brutus
|
|
|
|
|
float.TryParse ? If the string is 120pt, you need to strip the 'pt' part first, or it just won't work.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Yes, I could strip "pt" first, but the thing is that FontSize can be "Large", "Larger" etc. as well, so it's not always a "pt"-value. The size of the graphics-font I'm creating should correspond with the size of the original text-font, but the graphics-font is asking for a float value like this:
Font pFONT = new Font(sFontName, (float) iFontSize);
pGRAPH.DrawString("Text", pFONT, pBRUSH, 2, 2);
So, I'm looking for a way to somehow convert the original FontSize into a float-value.
|
|
|
|
|
In that case, you are dealing with relative values for the font size.
Therefore, you may want to have a look at this MSDN example[^].
SkyWalker
|
|
|
|
|
Thanks for pointing that out. Font.SizeInPoints is exactly what I need, but it's only for window forms, isn't it? I can't find any 'SizeInPoints'-property for fonts in ASP.NET.
|
|
|
|
|
You can use:
float emSize = Convert.ToSingle(YourWebControl.Font.Size.Unit.Value + 1);
emSize = (emSize == 0 ? 12 : emSize);
provided that you specified the Font-Size in points, e.g.: Font-Size="9pt" within your .aspx file.
SkyWalker
|
|
|
|
|
Thanks man, you're brilliant!
|
|
|
|
|
I have an application that calls win32 Dlls in c# with P/Invoke. The application works fine in the 32-bit window XP. When I migrate it to the 64-bit window XP( virtual machine ), the application fail to load win32 DLLs and with an error message of {"An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)"}. Anyone know whats the problem and how to solve this problem. Any help is appreciated. Thanks.
|
|
|
|
|
You cannot load 32-bit DLLs in a 64-bit process.
If you want to run your .NET program on a 64-bit machine but cannot provide 64-bit versions of native DLLs it uses, you should force it to run in a 32-bit process. (You will obviously lose the address-space benefits of running in a 64-bit process.) To do this, change the Platform Target property on the Build tab of Project Properties from 'Any CPU' (the default) to 'x86'.
You may want to consider generating a separate configuration for your project. Go to Build, Configuration Manager and in the Active Solution Platform drop-list, select <New...>. Then select 'x86' from the 'select new platform' drop-list and click OK.
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
in vb we have keyword as call that call a method , Is there any in c# that do work like this.
Yogesh Pekhale
pekhaleyogesh@gmail.com
|
|
|
|
|
To call a method, just specify it's name. I don't understand what you're talking about.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|