|
If the database is Sql Server 2005, you could always use SQL Server Notifications to notify clients that an event has happened. It would be the responsibility of the client to retrieve/work out what the changes are.
This is not a task for the faint hearted and I am currently writing a set of articles on how to use Notifications.
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Thanks but I using MySQL 5.0.
kss
|
|
|
|
|
You could roll your own version. It wouldn't be trivial, but would work like this:
Have your application poll a notifications table at a regular interval.
Whenever a record is inserted/updated/deleted that you are interested in, update the notifications table.
If there is a record there that you are interested in (probably identified via a timestamp) refresh your application
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Can MessageQueue be used in this Context ?
kss
|
|
|
|
|
Probably not. Well, you could use it but it doesn't bring you any benefits.
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Several combo boxes on the UI winform are populated using a DataTable. ie. dtUsers
dtUsers is a table in a dataset.
Several combo boxes are populated using this datatable.
Not sure why when an item in one of the combo boxes is selected, then all the other combo boxes get changed too.
This is a sample of how the combo boxes are populated:
dtUsers = dsUsers.Tables["Users"];
cbo1.DataSource = dtUsers;
cbo1.DisplayMember = "Name";
cbo1.ValueMember = "UserID";
|
|
|
|
|
I have had the same problem and solved it by using different datasources and not binding all combo boxes to the same datasource. So change this line dtUsers = dsUsers.Tables["Users"];
to another source
|
|
|
|
|
I assume of course that in cbo2 you give the DisplayMember a different value, right? Try to make a break point to see if this value applies or not.
Anyway, I've been working with ADO .Net and databindings for quite a while now, and let me tell you I'm completely displeased with it. It has many bugs, and what would Microsoft would call "features" that costed me a lot of time to discover it. When I submitted somehting to them all they said was "Make your own workaround. We don't have the time to fix this in the next version of Visual Studio. Thank you!", and that's it.
Anyway. A good way -that works for me- is to use a BindingSource and bind it to your controls using cbo1.DataBindings.Add() method. It works fine fr the Text property -but not with CheckBox.Checked property BTW-. A sample would be
BindingSource UsersSource = new BindingSource();
UsersSource.DataSource = dsUsers.Tables["Users"];
cbo1.DataBindings.Add(new Binding("SelectedItem", UsersSource, "Name"));
cbo1.DataBindings.Add(new Binding("SelectedValue", UsersSource, "UseID"));
I hope it works for you!
-- modified at 6:55 Thursday 4th January, 2007
The above code I use for a DropDownList combobox. You can also bind to the Text property according to your need.
Regards
|
|
|
|
|
Hi there,
Can you please tell me, how can i add a form in a dockpanel in c# 2005.
|
|
|
|
|
You can't add a form. What you can do is add a user control.
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Thanks. Why i want to add form in a dockpanel means, i want to create my dockpanel to contain controls like, toolbox, properties window, output window as they are dockable and hidable, closeable. So.. is there any way to achieve this environment?
|
|
|
|
|
I had the same prob..
A work around I used was, Do a normal form, then when you happy, happy with it, change inheritance to usercontrol. And that does the trick.
Unfortunately you have the uglyness of have to change the inheritance back to a form when you have to modify it.
Hope this helps
Sk8tZ
|
|
|
|
|
Hi,
set the TopLevel property of your Form to false before trying to add it.
Robert
|
|
|
|
|
Now I'm working on a project written by C#, we have an ActiveX compment include in our UI for get and display data from a fingerprint device.
The Activex gives data in "VARIANT" type, by default it will be mapped to "object" type in C#, and now I want to store it into database, and restore it and pass it back to the ActiveX compment to use.
Currently I'm using the simple way of serialize support of .NET platform, but I'm not sure whether it works since I have no test data yet. (the device was broken and sent for repair). In fact I don't think .NET is so smart.
Anyway, if it does work, how can I get my purpose? All I want is to convert the data into something can be stored into database(sqlserver) and restore it from database.
Clark Nu
|
|
|
|
|
I thought there was a "variant" (or is it binary?) type in (I presume you're using SQL) the database. If you just persist the object from C# into the database and reload it it'll come back as an object. The object can then be sent to the ActiveX.
I have no idea what I just said. But my intentions were sincere.
|
|
|
|
|
hi all,
i'm trying to create a windows service that takes a snap-shots every single time unit..
Is there any Class or Method in C# to take a snap-shots from the desktop or the monitor??
Thanks
TaRiQ
|
|
|
|
|
Hello,
You have to use "gdi32.dll" methods.
using System.Runtime.InteropServices;
[DllImport("gdi32.dll", SetLastError=true)]
private static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest,
int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc,
int dwRop);
[DllImport("gdi32.dll", SetLastError=true)]
private static extern IntPtr CreateDC(string lpszDriver, string lpszDevice,
string lpszOutput, IntPtr lpInitData);
private static int SRCCOPY = 0x00CC0020;
public static Bitmap Screenshot()
{
Graphics formGraphics = YoureForm.CreateGraphics();
Bitmap bitmap = new Bitmap(YoureForm.ClientRectangle.Width, YoureForm.ClientRectangle.Height, formGraphics);
Graphics bitmapGraphics = Graphics.FromImage(bitmap);
IntPtr formDC = formGraphics.GetHdc();
IntPtr bitmapDC = bitmapGraphics.GetHdc();
if (BitBlt(bitmapDC, 0, 0, YoureForm.ClientRectangle.Width,
YoureForm.ClientRectangle.Height, formDC, 0, 0, SRCCOPY) == 0)
{
formGraphics.ReleaseHdc(formDC);
bitmapGraphics.ReleaseHdc(bitmapDC);
throw new Exception("API-Error" + Marshal.GetLastWin32Error() +
" BitBlt");
}
formGraphics.ReleaseHdc(formDC);
bitmapGraphics.ReleaseHdc(bitmapDC);
return bitmap;
}
Hope that helps!
All the best,
Martin
|
|
|
|
|
Instead of API, you can use Graphics.CopyFromScreen() method.
Regards
|
|
|
|
|
Hello,
Nader Elshehabi wrote: you can use Graphics.CopyFromScreen() method.
Not with .Net1.1
|
|
|
|
|
Come on man! DotNet 3.0 is on the market. You should upgrade!!
If you use C# Express edition -which I believe got DotNet 1.1 only-, you can still use features from DotNet 2.0 using a trick I made sometime ago. Simply:
1- Install DotNet 2.0 on your machine and include it in the minimum requirement in your doumentation.
2- Add a reference in your project. Select browse
3- Browse to the DotNet 2.0 folder -I believe it was under "Windows\System32" folder-, and explicitly reference the Assembly you want. In our example it should be "System.Drawing.Dll" file.
Regards
|
|
|
|
|
Nader Elshehabi wrote: Come on man! DotNet 3.0 is on the market. You should upgrade!!
Are you telling this to your customers?
"Throughout human history, we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony. " - Morpheus
|
|
|
|
|
I thought Martin was one of our boys!
Regards
|
|
|
|
|
Yeah, but the fact that there is .NET Framework 3.0 doesn't mean that all .NET 1.x project will suddenly move to new platform - ultimately, this decision is up to customer (guess who pays you...) and try to explain them you must move project to newest version of .NET in order to take snap-shot. Good luck with that.
"Throughout human history, we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony. " - Morpheus
|
|
|
|
|
|
Nader Elshehabi wrote: Easy with the flames partner!!
What flames? I was merely stating a fact.
Nader Elshehabi wrote: I always release my software to that platform, and non of my customers ever complained. You don't upgrade to take a snap shot. I upgrade because I should upgrade.
I understand you, but you are forgetting that Martin is probably NOT creating new software in .NET 1.x, but rather modifying/fixing/adding functionality to some older application written in .NET1.x. If that's large codebase, all tested and proved to work in production environment, why would you migrate it to .NET 2.0? Don't fix it when it's not broken. Do you think that when .NET came C++ applications should've been rewritten into .NET just because it's there and it's cooler? That's just insane. OK, I hear ya. .NET 2.0 is backward compatible. But not 100%. And installing anythin new on server (let alone .NET framwork) is always security risk. Plus all that time spent cost money as well.
My point is that benefits of newer version of .NET are obvious when creating NEW software (or rewrite, major upgrade), but that doesn't mean that all code written in previous version suddenly disappeared.
Nader Elshehabi wrote: With all do respect to you -seriously again-... Move forward.
FYI I am developing web applications in ASP.NET 2.0
"Throughout human history, we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony. " - Morpheus
|
|
|
|