|
private void btnvalidate_Click(object sender, EventArgs e)
{
string adress;
Validateuradress vadrs = new Validateuradress();
adress = (dgv1.SelectedCells[0].Value.ToString());
if (vadrs.validate(adress))
{
DataGridViewImageColumn img = new DataGridViewImageColumn();
Image image = Image.FromFile(@"Valide.png");I have a problem at this level, never accepts the path of the image
dgv1.Columns.Add(img);
img.HeaderText = "Validate";
img.Name = "img";
}
|
|
|
|
|
That is probably because you aren't specifying one.
"Valide.png" does not have any path information, so it will be looked for in the current folder - which is likely to be the one the original EXE was run from, unless it has been changed in the meantime.
I would strongly suggest that you specify the path, at least relative to where the EXE started:
string appPath = Path.GetDirectoryName(Application.ExecutablePath); If your image file is in a floder below that, add the folder name on, and you should be able to get to your file.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
thank you ,
but I'll use it later because I want to click a submit button hard, I want each line before an image is displayed (valid or not valid)
private void btnvalidate_Click(object sender, EventArgs e)
{
string adress;
Validateuradress vadrs = new Validateuradress();
adress = (dgv1.SelectedCells[0].Value.ToString()); // test with a single line
if (vadrs.validate(adress))
{
Image image = Image.FromFile("Valide.png");
dgv1.Columns.Add(new DataGridViewImageColumn() { HeaderText = "Validate", DataPropertyName = "image" });
dgv1.CellFormatting += new DataGridViewCellFormattingEventHandler(dgv1_CellFormatting);
}
}
private void dgv1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1 && e.RowIndex != dgv1.NewRowIndex)
{
e.Value = File.ReadAllBytes(dgv1.Rows[e.RowIndex].Cells[1].Value.ToString()); // exeption file not found
}
}
|
|
|
|
|
I have a first form with a datagrid I view with one column there is a list of email addresses, I want to retrieve these values in the combobox the second form when click on the button here is the code, it does not work.
private void btnSend_Click(object sender, EventArgs e)
{
int i;
int j = dgv1.Rows.Count;
List<string> liste= new List<string>();
SendMail s = new SendMail();
s.MdiParent = this;
for (i = 0; i < j; i++)
{
liste[i] = dgv1.Rows[i].Cells[0].Value.ToString();
}
s.remplirCombo(liste);
s.Show();
}
|
|
|
|
|
MemberDotNetting wrote: it does not work. That's a vague statement. What do you mean by "it does not work"?
Can you post the code for s.remplirCombo() ? That's where you seem to populate the combobox.
[edit]
OriginalGriff is absolutely right. You need to first construct your list.
[/edit]
/ravi
|
|
|
|
|
public void remplirCombo(List<string> rw)
{
cmb.Items.Add(rw);
}
|
|
|
|
|
That needs to change too: Add is to add a single item. You need AddRange instead.
It may be worth your using Clear on the Items list as well, before you do this (to prevent it adding the values two or more times)
public void remplirCombo(List<string> rw)
{
cmb.Items.Clear();
cmb.Items.AddRange(rw);
}
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
I tried it but AddRange does not accept the list as an argument
|
|
|
|
|
I forgot - AddRange needs an array, not an IEnumerable...
public void remplirCombo(List<string> rw)
{
cmb.Items.Clear();
cmb.Items.AddRange(rw.ToArray());
} I just love consistency in .NET...
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
okey
|
|
|
|
|
That doesn't work, because liste does not have any elements, so trying to assign them with
liste[i] = dgv1.Rows[i].Cells[0].Value.ToString(); will give you an error.
Try this instead:
private void btnSend_Click(object sender, EventArgs e)
{
int i;
List<string> liste = new List<string>();
SendMail s = new SendMail();
s.MdiParent = this;
foreach (DataGridViewRow row in dgv1.Rows)
{
liste.Add(row.Cells[0].Value.ToString());
}
s.remplirCombo(liste);
s.Show();
} (Because you don't care about the row number, I would use a foreach loop instead of the for - it's just a bit clearer to read)
[edit]Typo: "lop" instead of "loop", "teh" instead of "the" - OriginalGriff[/edit]
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
OriginalGriff wrote: because liste does not have any elements, Note to self: don't answer posts before caffeinating.
/ravi
|
|
|
|
|
Took me a while to work out what you meant there - I didn't spot that we have both answered the question...
Yes, I find a large injection is mandatory before my little grey cells begin to mesh with any form of efficiency either!
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
thank you, but it generates an exception: Object reference not set to an instance of an object.
|
|
|
|
|
Where? Which line?
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
liste.Add(row.Cells[0].Value.ToString());
|
|
|
|
|
Which means that either:
1) You missed the line saying:
List<string> liste = new List<string>();
So liste is null.
2) There is no value in the row - which means that it has probably come from a database as DBNull and been translated as null.
Try an experiment:
foreach (DataGridViewRow row in dgv1.Rows)
{
DataGridViewCell cell = row.Cells[0];
if (cell != null)
{
object o = cell.Value;
if (o != null)
{
liste.Add(o.ToString());
}
else
{
Message.Show("Null in cell.Value");
}
}
else
{
MessageBox.Show("Null in cell");
}
}
Or look in the debugger and see which of them is null.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
No, I already instantiate the list, ok I want to try it, thank you
|
|
|
|
|
"Null in cell"
I retrieve data from datagrid via an exel file!
|
|
|
|
|
So you need to check for it and provide a default, or not add it to the list. Or find out why some of your values are blank!
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
anyway thank you
|
|
|
|
|
You're welcome!
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
hello guys... I am trying to write this simple service using this tutorial.
<a href="http://msdn.microsoft.com/en-us/library/aa984464(v=vs.71).aspx">MSDN Tutorial</a>.
To the best of my knowledge, i am doing exactly the same as the tutorial suggests. But still it does not insert the record in the SQL SERVER. The problem is, it does not give an error as well, thats why dont know what to do.
I have tested this insertion operation with another simple Windows Forms application and it works absolutely fine.
What can be the problem? thnx for any pointers.
|
|
|
|
|
We would have to see your code.
|
|
|
|
|
Here you are...
<pre lang="c#">
protected override void OnStart(string[] args)
{
InsertRec();
}
protected override void OnStop()
{
UpdateRec();
}
private void InsertRec()
{
string name = "abc";
string address = "abc";
string className = "abc";
string phone = "123456";
SqlConnection connection = new SqlConnection("Data Source=MUZE-PC\\SQLEXPRESS; Initial Catalog=StudentDB; Integrated Security=SSPI");
SqlCommand command = new SqlCommand("InsertStudent", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Name", SqlDbType.NVarChar).Value = name;
command.Parameters.Add("@Address", SqlDbType.NVarChar).Value = address;
command.Parameters.Add("@Class", SqlDbType.NVarChar).Value = className;
command.Parameters.Add("@Phone", SqlDbType.NVarChar).Value = phone;
try
{
connection.Open();
int res = command.ExecuteNonQuery();
}
catch (Exception ex)
{ connection.Close();}
finally
{ connection.Close(); }
}
private void UpdateAttendence()
{
int ID = 1;
string machineName = "Ali";
SqlConnection connection = new SqlConnection("Data Source=MUZE-PC\\SQLEXPRESS; Initial Catalog=StudentDB; Integrated Security=SSPI");
SqlCommand command = new SqlCommand("UpdateStudent", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@StudentID", SqlDbType.Int).Value = ID;;
command.Parameters.Add("@Name ", SqlDbType.NVarChar).Value = name;
try
{
connection.Open();
int res = command.ExecuteNonQuery();
}
catch (Exception ex)
{ connection.Close(); }
finally
{ connection.Close(); }
}
</pre>
|
|
|
|