|
Hi,
Thanks for the reply, I think , what i have written earlier is a little confusing. I am using MySql provider. and there is no problem with MySql provider. But what i want is:
for eaxmple: if Two users "Chris" and "Sally" open the same form. suppose Chris Modifies the record no.13 and the record is updated to database but Sally's screen still shows the Old data. I can refresh the whole screen by re-fetching the data from the DB but is time consuming.
but i want some other solution may be an network event kind, whenever change occurs in other machine. it(machine) sends a message kind to all the peers(who have the same form opened). so that i can manage it on the frontend itself. as the data is huge so it is not possible for me to refresh again and again.
How far this is possible ?
thanks again
kss
|
|
|
|
|
Well. Here is how I do it
1- Put the database on the server. -intuitive, isn't it?-
2- Put a Windows Application -or service-, or Webservice according to either your program is on LAN/Internet respectively, as a gate to that database.
3- All requests are directed to that "Gate" program through remoting
4- All programs record there interest on the current displayed record and the gate keeps track of that
5- if a record is displayed on one client and another modifies it the gate notifies the interested clients using messages.
6- Messages and requests are preferably routed using Remoting.
This is one way to do it. Does this help?
Regards
|
|
|
|
|
Well I Have never worked on Remoting and if this will help me then i Would not mind Working. I will look into this , if you have any good links of this kind of implementation then can please let me know, it will be of great help
Thanks again
kss
|
|
|
|
|
fearless stallion wrote: if you have any good links of this kind of implementation
If you mean remoting, try this link[^]. It'll get you started in no time.
Regards
|
|
|
|
|
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
|
|
|
|