|
|
I know that.
This property can be set for Combobox Not For DataGridViewComboboxColum
and my question is how to do this for DataGridViewComboboxColum
|
|
|
|
|
Hi Everyone
I am using Datagridview with a combobox column in my form. I am having a table in my database with a single column for "name".
On my form load event i want to get the names from the database and fill the combobox column with all the names.
I have declared the combobox like this:
ComboBox combobox; before
Public Form1(){InitializeComponent();}
Then I have added the following code in DataGridView1_EditingControlShowing event:
if (DataGridView1.CurrentCell.ColumnIndex == 1)
{
combobox = (ComboBox)e.Control;
Function1();
}
This is the code for Function1():
try
{
combobox.Items.Clear();
string q = "select * from Table1";
Con.Open();
DataSet ds = new DataSet();
NpgsqlDataAdapter da = new NpgsqlDataAdapter(q, Con);
da.Fill(ds, "Table");
for (int i = 0; i < (ds.Tables["Table"].Rows.Count); i++)
{
string name = ds.Tables["Table"].Rows[i]["name"].ToString();
combobox.Items.Add(name);
}
Con.Close();
}
catch
{}
When the form loads the data is coming in the combobox from the database nicely. But after I select any of the names and leave the combobox cell I got an DataError exception. So to handle that exception i just added the following event without any code:
private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{}
Since then no error is coming but after I select a value in the combobox and leave that cell, the selected value is not coming in that combobox. Its showing blank.
I have been trying to find a solution for a long time but i couldn't. So if anybody can help i will be very much thankful.
Thanking all
Arijit
|
|
|
|
|
Some event handlers, including DGV_DataError, are NOT meant to hide problems, but to offer an opportunity to do something about what happened. Have a look at DataGridViewDataErrorEventArgs, it has several properties that tell you more about the actual problem; then fix it.
What you did is analogous to having a try-catch with an empty catch block, which generally is bad as it hides problems, rather than solving them.
|
|
|
|
|
I kept the try-catch block so that if the database is empty it doesn't show an error. I forgot to put the message box while posting in the message board.
But I think the problem is not coming from the try-catch block as I have debugged using breakpoints. The DataError exception is coming when I am leaving the combobox cell. The DataGridViewDataErrorEventArgs is showing an error like this "DataGridViewComboboxCell values is not valid" and it keeps on coming till I stop debugging.
One thing that I am not sure is whether the problem is in the Function1() or I have not properly binded the combobox.
|
|
|
|
|
When an error message is available, throw it at Google[^] and start reading.
You probably have an empty field in your database, returning a null, whivh isn't one of the combobox values.
|
|
|
|
|
I have gone through google. But everywhere i have got solutions where people have added a blank DataError code block. Anyways i have sorted out the problem i have just replaced the "for-loop" in Function1 with the following lines of code:
((DataGridViewComboBoxColumn)DataGridView1.Columns[1]).DataSource = ds.Tables[0];
((DataGridViewComboBoxColumn)DataGridView1.Columns[1]).DisplayMember = "name";
((DataGridViewComboBoxColumn)DataGridView1.Columns[1]).ValueMember = "id";
and now its working fine with a small bug.
Thank you all
|
|
|
|
|
hi, i want to catch/hook the start button press event. may you write a simple sample code to catch the mouse event? imza...
|
|
|
|
|
Every UI control has an event for that - MouseDown and MouseUp. I believe the event arguments tells you which button is up/down. Go forth and code..45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
sorry i think i didnt say clear what i want. iwan to hook/catch mouse down on StartButton, global hook. imza...
|
|
|
|
|
You mean the start button in the Windows task bar?.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
thanks for your interests yes i meant it imza...
|
|
|
|
|
You have to use Spy++ (comes with Visual Studio) to discover the window handle of the button. You may even be able to find that on google by now, but it may be different for each version of windows (Win2K, XP, Vista, Win7).
Are you sure you want to do that?.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
thank you but the sunject is about the windows mobile mouse hook, global hook with c# on windows mobile. imza...
|
|
|
|
|
That shouldn't matter. You have to do the same thing, and you have the same requirements/issues to deal with..45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
Hello,
I would like to make a program ta accesses another running exe. And I want it to check the controls on that exe and other members. Can this be done by reflection or by some other method?
Can anyone point me to where I can start?
Thank you very much for your time in advance.
Regards,
Christian Pace
|
|
|
|
|
I would think Reflection is the place to start..45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
cdpace wrote: another running exe.
Is the target program something you've written (and therefore have the source code for) or are you speaking in general - i.e. do you want to be able to send keystrokes to any executing program?
/ravi
|
|
|
|
|
MY CONECTION STRIN IS:
private const string CnnStr = "Data Source=(local);Initial Catalog=Library;Integrated Security=SSPI;";
MY datagrid bind is:
dataGridViewX1.DataBindings.Add(new Binding("Data Source", dsDataMember, "tblmembers"));
My Database is Sql server 2008
What is the Problem?
|
|
|
|
|
shahramkeyboard wrote: What is the Problem?
That is a very good question!
Unfortunately, you forgot to tell us that bit. What is happening? What is not happening? What do you expect to happen? Does it compile? Does it throw an exception? Go on, you know you want to tell us!You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
My Book Business logic Layer is:
using System;
using System.Data;
using System.Text;
using System.Data.SqlClient;
namespace Library_Project
{
public class bookBL
{
private String bookcode;
private String bookname;
private String shabok;
private String nasher;
private String motarjem;
private String mozo;
private bookDA bookData;
public bookBL()
{
bookData = new bookDA();
}
public String Bookcode
{
get
{
return this.bookcode;
}
set
{
this.bookcode = value;
}
}
public String Bookname
{
get
{
return this.bookname;
}
set
{
try
{
this.bookname = value;
if (this.bookname == "")
{
throw new Exception(
"لطفا نام کتاب را وارد نمایید");
}
}
catch(Exception e)
{
throw new Exception(e.Message.ToString());
}
}
}
public String Shabok
{
get
{
return this.shabok;
}
set
{
this.shabok = value;
if (this.shabok == "")
{
throw new Exception("لطفا شابک کتاب رو وارد نمایید");
}
}
}
public String Nasher
{
get
{
return this.nasher;
}
set
{
this.nasher = value;
if (this.nasher == "")
{
throw new Exception("لطفا نام ناشر را وارد نمایید");
}
}
}
public String Motarjem
{
get
{
return this.motarjem;
}
set
{
this.motarjem = value;
}
}
public String Mozo
{
get
{
return this.mozo;
}
set
{
this.mozo = value;
if (this.mozo == "")
{
throw new Exception("لطفا موضوع کتب رو انتخاب کنید");
}
}
}
public void Add()
{
bookData.Add(this);
}
public void Update()
{
bookData.Update(this);
}
public DataSet View()
{
DataSet dsData = null;
dsData = bookData.View();
return dsData;
}
}
}
My Data Access Layer Is :
using System;
using System.Data.SqlClient;
using System.Data;
using System.Text;
namespace Library_Project
{
class bookDA
{
private SqlConnection cnn;
private const string CnnStr = "Data Source=(local);Initial Catalog=Library;Integrated Security=SSPI;";
private String strTable="";
private String strFields="";
private String strValues="";
private String insertStr="";
private const String thisTable = "tblbooks";
private const String book_code = "codebook";
private const String book_name = "bookname";
private const String book_nasher = "nasher";
private const String book_motarjem = "motarjem";
private const String book_shabok = "shabok";
private const String book_mozo = "mozo";
public bookDA()
{
}
public bookDA(bookBL book)
{
}
public void Add(bookBL book)
{
String str = BuildAddString(book);
OpenCnn();
SqlCommand cmd = new SqlCommand(str, cnn);
cmd.ExecuteNonQuery();
CloseCnn();
}
public void Update(bookBL book)
{
OpenCnn();
String selectStr = "UPDATE " + thisTable +
" set " + book_name + " = '" + book.Bookname + "'" +
", " + book_nasher + " = '" + book.Nasher + "'" +
", " + book_motarjem + " = '" + book.Motarjem + "'" +
", " + book_shabok + " = '" + book.Shabok + "'" +
", " + book_mozo + " = '" + book.Mozo + "'" +
" where book_code = '" + book.Bookcode + "'";
SqlCommand cmd = new SqlCommand(selectStr, cnn);
cmd.ExecuteNonQuery();
CloseCnn();
}
public DataSet Find(String argStr)
{
DataSet ds=null;
try
{
OpenCnn();
String selectStr = "select * from " + thisTable +
" where code_book = '" + argStr + "'";
SqlDataAdapter da = new SqlDataAdapter(selectStr, cnn);
ds = new DataSet();
da.Fill(ds,thisTable);
CloseCnn();
}
catch(Exception e)
{
String Str = e.Message;
}
return ds;
}
public DataSet View()
{
DataSet ds = null;
try
{
OpenCnn();
String selectStr = "select * from " + thisTable + "'";
SqlDataAdapter da = new SqlDataAdapter(selectStr, cnn);
ds = new DataSet();
da.Fill(ds, thisTable);
CloseCnn();
}
catch (Exception e)
{
String Str = e.Message;
}
return ds;
}
private void OpenCnn()
{
String cnnStr = CnnStr;
cnn = new SqlConnection(cnnStr);
cnn.Open();
}
private void CloseCnn()
{
cnn.Close();
}
private String BuildAddString(bookBL book)
{
strTable="Insert into " + thisTable;
strFields = " (" + book_code +
"," + book_name +
"," + book_nasher +
"," + book_motarjem +
"," + book_shabok +
"," + book_mozo + ")";
strValues = " Values ( '" + book.Bookcode +
"' , '" + book.Bookname +
"' , '" + book.Nasher +
"' , '" + book.Motarjem +
"' , '" + book.Shabok +
"' , '" + book.Mozo + "' )";
insertStr = strTable + strFields + strValues;
return insertStr;
}
}
}
I want Show Table IN datagrid
My Interface Layer is:
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Rendering;
namespace Library_Project
{
public partial class ViewInfo : Form
{
Boolean StatusUser;
public ViewInfo()
{
InitializeComponent();
}
private void ViewInfo_Load(object sender, EventArgs e)
{
if (StatusUser == false)
{
addbook.Enabled = false;
}
DataSet dsDataBook = null;
bookBL thisBook = new bookBL();
dsDataBook = thisBook.View();
if (dsDataBook == null)
{
}
else
{
dataGridViewX2.DataBindings.Add(new Binding("DataSource", dsDataBook, "tblbooks"));
dataGridViewX2.Columns[0].HeaderText = "کد کتاب";
dataGridViewX2.Columns[1].HeaderText = "نام کتاب";
dataGridViewX2.Columns[2].HeaderText = "ناشر";
dataGridViewX2.Columns[3].HeaderText = "مترجم";
dataGridViewX2.Columns[4].HeaderText = "شابک";
dataGridViewX2.Columns[5].HeaderText = "موضوع";
try
{
textBox12.DataBindings.Add(new Binding("Text", dsDataBook, "tblbooks.codebook"));
textBox13.DataBindings.Add(new Binding("Text", dsDataBook, "tblbooks.bookname"));
textBox14.DataBindings.Add(new Binding("Text", dsDataBook, "tblbooks.nasher"));
textBox15.DataBindings.Add(new Binding("Text", dsDataBook, "tblbooks.motarjem"));
textBox16.DataBindings.Add(new Binding("Text", dsDataBook, "tblbooks.shabok"));
textBox17.DataBindings.Add(new Binding("Text", dsDataBook, "tblbooks.mozo"));
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString());
}
}
}
private void dataGridViewX1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
textBox1.Text = dataGridViewX1.CurrentRow.Cells[0].Value.ToString();
textBox2.Text = dataGridViewX1.CurrentRow.Cells[1].Value.ToString();
textBox3.Text = dataGridViewX1.CurrentRow.Cells[2].Value.ToString();
textBox4.Text = dataGridViewX1.CurrentRow.Cells[3].Value.ToString();
textBox5.Text = dataGridViewX1.CurrentRow.Cells[4].Value.ToString();
textBox6.Text = dataGridViewX1.CurrentRow.Cells[5].Value.ToString();
textBox7.Text = dataGridViewX1.CurrentRow.Cells[6].Value.ToString();
textBox8.Text = dataGridViewX1.CurrentRow.Cells[7].Value.ToString();
textBox9.Text = dataGridViewX1.CurrentRow.Cells[8].Value.ToString();
textBox10.Text = dataGridViewX1.CurrentRow.Cells[9].Value.ToString();
}
}
}
|
|
|
|
|
That's a lot of code to wade through! Without your database, no one can run it - not that they would, probably. Don't try to post your database here - just answer the questions:
1) What is happening when you run the program?
2) What did you expect to happen?You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
I WANT TO DATA SHOW IN DATAGRID BUT IN DATASOURCE EOOR
error is in line:
dataGridViewX2.DataBindings.Add(new Binding("DataSource", dsDataBook, "tblbooks"));
|
|
|
|
|
shahramkeyboard wrote: WANT TO DATA SHOW IN DATAGRID BUT IN DATASOURCE EOOR
No need to shout!
shahramkeyboard wrote: error is in line:
dataGridViewX2.DataBindings.Add(new Binding("DataSource", dsDataBook, "tblbooks"));
And what is the error? I assume it is an exception - what is the exception saying?You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
you have shown lots of useless code and wasted three hours already. You should have given detailed symptoms in your very first message. We still don't know what error occurred. If it is an exception, show all of the Exception.ToString() output and point at the right line of code.
|
|
|
|