|
Amit Answer is enough for you to solve your problem but I want to tell you about setting events in Asp.net Forms.
When you create control in Asp.net Form and then you want to create event for that,You can create event code in C# code of Asp.net Page.
Because of this you should set the type of event and name of it by tag in Asp.net page then go to the C# page of it and create the handle code for your event.
For example I want to create onclick event for button in my page.
First you write the button code in Asp.net Page same as this code:
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
Then go to C# page and create event for that button same as this code:
protected void Button1_Click(object sender, EventArgs e)
{
}
The important thing is the name of event in the tag and the name event in c# code should be same.
It's very simple and I believe you can do it so if it works let me know.
|
|
|
|
|
thanks for mention my name in your answer
|
|
|
|
|
Your Welcome Dear Friend.
|
|
|
|
|
i'm new in C#, whenever i'm going to create an event sub in vb.net, i choose event inside two combobox below page tab, but in C# it's totally different.
then i figure it out by double clicking event properties, the sub will pop out in the code page.
nah this time, it's about dataset (datatable) event, both method above isn't working.
i've tried code converter and the output is "handles clauses are not supported in C#"
any suggestion?
uh and also, what's inside two combobox below page tab in C#?
modified 5-Jul-12 5:52am.
|
|
|
|
|
The two combo boxes are easy - the left is all the classes in the current file - click on one and it will take you to the start of the definition. On the right are all the objects in the class - again, click to go to definition.
The event adding in C# is the same for DataSet object (you can't add DataTables directly in the designer, so they are irrelevant here). Highlight the dataset, and look at the Properties pane. Click on the Lightning Bolt button to switch to the Events view, and double click the event - there are only three for a dataset anyway, and it it unlikely that you would want to handle any of them as a beginner in C# - Disposed, Initialized and MergeFailed are events I've not needed to override yet!
To add event handlers for a DataTable, you have to add it to the DataSet via it's Tables property, then select the table in the Property pane Objects drop down list. You can then access the events via the Lightening bolt button as before.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
yes, from the first time i'm confused of these two combobox in C#, i've use that lightning bolt (event) properties.
the problem is, in dataset or even when i clicked datatable, there's no lightning bolt in properties page.
|
|
|
|
|
The properties page is only relevant in the designer - not in the code window, if that's where you are clicking.
You can't click a DataTable in the designer window directly - it doesn't have any UI element, so I assume you are highlighting the DataTable in the code window and trying to add an event? If so, then just on a new line in your code, type the name of the DataTable instance and press "." Intellisense will pop up a list of objects - select the event you want to add a handler for and type "+="
myDataTable.ColumnChanged+= Intellisense will pop up a handler helper box:
new DataColumnChangeEventHandler(dt_ColumnChanged); (Press TAB to insert) Press Tab to insert the text, and another box will appear:
Press TAB to generate Handler "dt_ColumnChanged" in this class If you press Tab again, it will create a handler method stub for you to complete.
Once you have the basic code, you can modify or tweak it to fit what you want to do !
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
namespace Documents.Objects.Datasets
{
public partial class dsDocuments
{
BooksDataTable.
}
}
pardon me, i'm not really sure where to put the code, inside datatable class or dataset class, but wherever i put "BooksDataTable.", no intellisense is available.
sorry i'm not used to C#, i'd be glad if you give me more information of this.
|
|
|
|
|
Inside a method:
private DataTable BooksDataTable = new DataTable();
private void AddHandlers()
{
BooksDataTable.ColumnChanged += new DataColumnChangeEventHandler(BooksDataTable_ColumnChanged);
}
void BooksDataTable_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
throw new NotImplementedException();
}
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
thank you very much, i get it now.
modified 5-Jul-12 5:53am.
|
|
|
|
|
Yes, of course! All you have to do is add the appropriate code to the DataTables in the DataSet.Tables property.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
I have a DataTable MyDT like below:
string MyConString = "SERVER=" + sConfig_hostname + ";" +
"DATABASE=" + sConfig_dbname + ";" +
"UID=" + sConfig_dbusername + ";" +
"PASSWORD=" + sConfig_dbpassword + ";Allow Zero Datetime=true;";
MySqlConnection connection = new MySqlConnection(MyConString);
string sQuery="Select * from Table";
connection.Open();
MySqlDataAdapter myDA = new MySqlDataAdapter(sQuery, connection);
myDA.SelectCommand.ExecuteNonQuery();
DataTable MyDT=new DataTable()
myDA.Fill(MyDT);
connection.Close();
...
...
...
...
After do something with MyDT , I want to update it to the DataBase, how can I do it ?I have searched sereral forums but almost update by looping the datatable? is there a way to update the whole datatable without loop?Please help! Thanks for reading!
|
|
|
|
|
You need to write an update command for myDA .
For e.g.
myDA.UpdateCommand = new MySqlCommand(///my query)
All you need to then do is call myDA.Update(MyDT) .
You can even define parameters in your update command.
Connecting to MySQL Database using C# and .NET[^] may help.
|
|
|
|
|
|
Hi All,
Pete O'Hanlon has helped me with this ([^]Yesterday & before) but the thing is I still need a prod in the correct direction, to give the correct and full story (which might make more sense to Pete!) I have to write some software to interface to a board with a USB, I am not happy about installing the driver that installed already and breaking things. I have written successfully some code to check for the driver installed. In thinking that the driver in the future could be updated I wanted to check the date and or revision of the driver so if I install over the old driver only if it's earlier than the one I need.
The code I had was
ServiceController[] scDevices = ServiceController.GetDevices();
MessageBox.Show("Device driver services on the local computer");
foreach (ServiceController scTemp in scDevices)
{
lstDrivers.Items.Add(scTemp.ServiceType + "," + scTemp.ServiceName +
"," + scTemp.DisplayName);
}
This will shove all the installed drivers to a list box another bit of code
index = lstDrivers.FindString("KernelDriver,FTDIBUS,USB Serial Converter Driver");
if (index != -1)
{
lstDrivers.SetSelected(index, true);
}
Using this method using ServiceController.GetDevices() I think the reference Pete gave me yesterday doesn't really help with the issue I was having, I would like to be able to read all the data concerning the drivers date and version at both the install & run time
(thinking it would be useful for another project) I would like to know two things a) how to use the bit of code Pete supplied, b) Should I do the driver as part of the setup or tell the user "if it don't appear install this!"?
Glenn(sorry for being thick!)
modified 5-Jul-12 11:54am.
|
|
|
|
|
Ah. I see what you're trying to get - it's a lot clearer now. Anyway, you might find this code to be more of a match:
class Program
{
static void Main(string[] args)
{
var x = GetDriverInfo("ConfigMgr Remote Control Driver");
}
public class SignedDriver
{
public string DriverVersion;
public string DeviceName;
public string DriverDate;
}
public static SignedDriver GetDriverInfo(string driverName)
{
SignedDriver driver = new SignedDriver();
SelectQuery query = new SelectQuery("Win32_PnPSignedDriver");
query.Condition = string.Format("DeviceName='{0}'", driverName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject manageObject in searcher.Get())
{
object driverVer = manageObject.Properties["DriverVersion"].Value;
object deviceName = manageObject.Properties["DeviceName"].Value;
object driverDate = manageObject.Properties["DriverDate"].Value;
if (deviceName != null)
{
driver.DeviceName = deviceName.ToString();
driver.DriverDate = driverDate.ToString();
driver.DriverVersion = driverVer.ToString();
}
}
return driver;
}
}
|
|
|
|
|
Hi,
Thanks for that (should learn to fully explain problem!) OK to run that piece of code I have pasted into a Console App added a Console.ReadLine(); and added the reference to System Management. The syntax checker has given the blue 'wiggly' line to indicate a reference has not been made (right?).
Glenn
|
|
|
|
|
Have you added using System.Management; at the top of that file?
|
|
|
|
|
No I hadn't, I did and was greeted with a console window (!), now I need to know how to get the gory details out, if use
Console.WriteLine(x.ToString());
I get " Console Application 27.Program+SignedDriver " after a wait which I assume is due to the data being collected, how can I echo the returned data by the
return driver;
I take it the class SignedDriver takes the values that can be printed with
Console.WriteLine("{0}:{1}:{2}"+DriverVersion+DeviceName+DriverDate);
the question is where to put this command to get something useful(!)
Sorry this is turning into a task that is beyond a joke! (I should have stuck to VB6 & C)
Glenn
|
|
|
|
|
Console.WriteLine("{0}:{1}:{2}",x.DriverVersion,x.DeviceName,x.DriverDate); BTW - x is a horrible name for the variable. I only used it in my original sample as a place holder for me to hover over in the debugger to inspect the values. I would rename it to something meaningful if I were you.
|
|
|
|
|
Thanks for that I have got:
ConsoleApplication27.Program+SignedDriver
:: It's printing the place holders meaning I now need to loop with for or while to the end of the list right? as the current x.DeviceName does not have a value in it?
does var x contain all the data? or will another variable have to used?
Glenn
|
|
|
|
|
Do you, or do you not, know the device name of the driver? If you know the name of the driver, put that into GetDriverInfo . That will retrieve a single instance of that driver, which will be fully populated with the DeviceName , DriverVersion and DriverDate .
If you don't, you will need to amend GetDriverInfo to return a list of SignedDriver items, and add a SignedDriver instance whenever you have populated it. You would then loop through this list after you called GetDriverInfo .
|
|
|
|
|
In the grand tradition of "do this" with no details the driver is FTDIBUS I think
I have tried:
var DriverDetails = GetDriverInfo("FTDIBUS");
still prints ::
and various versions shortening the string lengthening it I'm lost...
tried looking around for other sources of how to get the correct driver and nearly all of them just check the name (which I can do!) it just that I can't get to anything useful like a date or version number.
Glenn (Confusion reigns!)
|
|
|
|
|
Get the complete list, as I suggest, and then iterate over it to see which one matches the FTDIBUS. Don't try guesswork, let the computer do the work for you.
|
|
|
|
|
right okay, if I run the console app pretty much as stands how can I get to the class SignedDriver as when I alter the GetDriverInfo line to be
var DriverDetails = GetDriverInfo(SignedDriver);
it gives back: type used like variable, overload method errors, cannot convert to string
This is what I never understood about C++ classes (by the way what are you doing answering silly questions at half 5 in the morning?)
Glenn
|
|
|
|