problem binding comboBox to dataset

  • Thread starter Thread starter Kunal
  • Start date Start date
K

Kunal

Set your DataValueField (i.e what the value should be if the combo box
is taking part in any events) and the DataTextField (what should be
displayed)..

try setting

comboBox_emplcode.DataTextField = " " <-- field u want as the display
comboBox_emplcode.DataValueField = " " <-- field u want as value..

also make sure u comboBox_emplcode.DataBind()
 
When I try to databind my comboBox (specifically field "emplcode") to a
filled dataset , the contents of the comboBox displays a bunch of
"System.Data.DataRowView". I assume the amount of times
"System.Data.DataR..." is displayed inside the combobox is the amount of
records in the dataset. On the other hand, if my query is "select emplcode
from payemployee", the databind will work fine (but I don't want to limit
the dataset to one field). Any help is appreciated. This is the code:

DataSet DS_Employees = new DataSet();

SqlConnection SQLConn = new SqlConnection("Data Source=localhost; Integrated
Security=SSPI;" +

"Initial Catalog=payroll");

string strThisQuery = "select * from payemployee"; //If the query were
"select emplcode from payemployee" it works

SqlDataAdapter DA_empl = new SqlDataAdapter (strThisQuery, SQLConn);

DA_empl.Fill(DS_Employees, "payemployee"); //Do I need the 2nd parameter?

SQLConn.Close();

comboBox_emplcode.DataSource = DS_Employees.Tables["payemployee"];

comboBox_emplcode.DisplayMember = "emplcode"; //I also tried
comboBox_emplcode.DisplayMember = "payemployee.emplcode";



Thanks again,

Omar
 
Hello Omar,

You can do something like this:
try
{
DataSet ds=new DataSet();
SqlDataAdapter adapter=new SqlDataAdapter("select * from
jobs","server=localhost;database=pubs;uid=sa;pwd=");
adapter.Fill(ds);
comboBox1.DataSource=ds.Tables[0];
comboBox1.DisplayMember="job_desc";
comboBox1.ValueMember="job_id";
}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
}

I use the default database of SqlServer and use the job_desc column as the
display item of comboBox, job_id column as the value item of the comboBox.
You can get the current selected member of these 2 column value by
comboBox1.SelectedText and comboBox1.SelectedValue.

Hope this helps,
Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
| Reply-To: "Omar" <none>
| From: "Omar" <none>
| Subject: problem binding comboBox to dataset
| Date: Wed, 8 Oct 2003 17:51:35 -0500
| Lines: 36
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.languages.csharp
| NNTP-Posting-Host: 66-50-71-153.prtc.net 66.50.71.153
| Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
| Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:190027
| X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
|
| When I try to databind my comboBox (specifically field "emplcode") to a
| filled dataset , the contents of the comboBox displays a bunch of
| "System.Data.DataRowView". I assume the amount of times
| "System.Data.DataR..." is displayed inside the combobox is the amount of
| records in the dataset. On the other hand, if my query is "select emplcode
| from payemployee", the databind will work fine (but I don't want to limit
| the dataset to one field). Any help is appreciated. This is the code:
|
| DataSet DS_Employees = new DataSet();
|
| SqlConnection SQLConn = new SqlConnection("Data Source=localhost;
Integrated
| Security=SSPI;" +
|
| "Initial Catalog=payroll");
|
| string strThisQuery = "select * from payemployee"; //If the query were
| "select emplcode from payemployee" it works
|
| SqlDataAdapter DA_empl = new SqlDataAdapter (strThisQuery, SQLConn);
|
| DA_empl.Fill(DS_Employees, "payemployee"); //Do I need the 2nd parameter?
|
| SQLConn.Close();
|
| comboBox_emplcode.DataSource = DS_Employees.Tables["payemployee"];
|
| comboBox_emplcode.DisplayMember = "emplcode"; //I also tried
| comboBox_emplcode.DisplayMember = "payemployee.emplcode";
|
|
|
| Thanks again,
|
| Omar
|
|
|
 
Thanks for the response.
In my case, the DataTextField or DataValueField members don't exist and the
DataBind method doesn't exist either.

Kunal said:
Set your DataValueField (i.e what the value should be if the combo box
is taking part in any events) and the DataTextField (what should be
displayed)..

try setting

comboBox_emplcode.DataTextField = " " <-- field u want as the display
comboBox_emplcode.DataValueField = " " <-- field u want as value..

also make sure u comboBox_emplcode.DataBind()

When I try to databind my comboBox (specifically field "emplcode") to a
filled dataset , the contents of the comboBox displays a bunch of
"System.Data.DataRowView". I assume the amount of times
"System.Data.DataR..." is displayed inside the combobox is the amount of
records in the dataset. On the other hand, if my query is "select emplcode
from payemployee", the databind will work fine (but I don't want to limit
the dataset to one field). Any help is appreciated. This is the code:

DataSet DS_Employees = new DataSet();

SqlConnection SQLConn = new SqlConnection("Data Source=localhost; Integrated
Security=SSPI;" +

"Initial Catalog=payroll");

string strThisQuery = "select * from payemployee"; //If the query were
"select emplcode from payemployee" it works

SqlDataAdapter DA_empl = new SqlDataAdapter (strThisQuery, SQLConn);

DA_empl.Fill(DS_Employees, "payemployee"); //Do I need the 2nd parameter?

SQLConn.Close();

comboBox_emplcode.DataSource = DS_Employees.Tables["payemployee"];

comboBox_emplcode.DisplayMember = "emplcode"; //I also tried
comboBox_emplcode.DisplayMember = "payemployee.emplcode";



Thanks again,

Omar
 
Thanks for your post. I tried it your way with the same result. Instead of
displaying 111 emplcodes (the amount of records in the table), it displays
111 "System.Data.DataRowView". I *did* notice that it ignores the
comboBox.DisplayMember member.

I also tried it like this:
try
{
DataSet DS_Employees=new DataSet();
SqlConnection SQLConn = new SqlConnection("Data Source=localhost;
Integrated Security=SSPI;" +
"Initial Catalog=payroll");
SqlDataAdapter DA_empl = new SqlDataAdapter (strThisQuery, SQLConn);
DA_empl.Fill(DS_Employees, "payemployee");
SQLConn.Close();
DataView dv = new DataView(DS_Employees.Tables["Payemployee"]);
comboBox1.DataSource=dv;
comboBox1.DisplayMember = "FName";
// I can susbstitute the previous line with comboBox1.DisplayMember =
"thisFieldDoesntExist"; and it'll display the same 111
"System.Data.DataR..." lines
catch(Exception ex)
{
MessageBox.Show(ex.Message ); //it never displays the MessageBox since
it never encounters an error.
}

Jeffrey Tan said:
Hello Omar,

You can do something like this:
try
{
DataSet ds=new DataSet();
SqlDataAdapter adapter=new SqlDataAdapter("select * from
jobs","server=localhost;database=pubs;uid=sa;pwd=");
adapter.Fill(ds);
comboBox1.DataSource=ds.Tables[0];
comboBox1.DisplayMember="job_desc";
comboBox1.ValueMember="job_id";
}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
}

I use the default database of SqlServer and use the job_desc column as the
display item of comboBox, job_id column as the value item of the comboBox.
You can get the current selected member of these 2 column value by
comboBox1.SelectedText and comboBox1.SelectedValue.

Hope this helps,
Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
| Reply-To: "Omar" <none>
| From: "Omar" <none>
| Subject: problem binding comboBox to dataset
| Date: Wed, 8 Oct 2003 17:51:35 -0500
| Lines: 36
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.languages.csharp
| NNTP-Posting-Host: 66-50-71-153.prtc.net 66.50.71.153
| Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
| Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:190027
| X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
|
| When I try to databind my comboBox (specifically field "emplcode") to a
| filled dataset , the contents of the comboBox displays a bunch of
| "System.Data.DataRowView". I assume the amount of times
| "System.Data.DataR..." is displayed inside the combobox is the amount of
| records in the dataset. On the other hand, if my query is "select emplcode
| from payemployee", the databind will work fine (but I don't want to limit
| the dataset to one field). Any help is appreciated. This is the code:
|
| DataSet DS_Employees = new DataSet();
|
| SqlConnection SQLConn = new SqlConnection("Data Source=localhost;
Integrated
| Security=SSPI;" +
|
| "Initial Catalog=payroll");
|
| string strThisQuery = "select * from payemployee"; //If the query were
| "select emplcode from payemployee" it works
|
| SqlDataAdapter DA_empl = new SqlDataAdapter (strThisQuery, SQLConn);
|
| DA_empl.Fill(DS_Employees, "payemployee"); //Do I need the 2nd parameter?
|
| SQLConn.Close();
|
| comboBox_emplcode.DataSource = DS_Employees.Tables["payemployee"];
|
| comboBox_emplcode.DisplayMember = "emplcode"; //I also tried
| comboBox_emplcode.DisplayMember = "payemployee.emplcode";
|
|
|
| Thanks again,
|
| Omar
|
|
|
 
I finally found the answer. Apparently, the field in
comboBox.DisplayMember is case-sensitive (at least for SQL Server 2000).
The funny thing is that the sql statement used to fill the dataset is *not*
case-sensitive.

Thanks again for the help.
 
Hi Omar,

I think the SQL statement is passed to the SqlServer by the .Net
application, and it will be handled by the SqlServer, so it is not
case-sensitive.
While binding the ComboBox's DisplayMember property with certain field of
database, this field is already the column of DataSet and it is processed
in .Net, so it is case-sensitive.(I think this is determined by the design
of DisplayMember property).

I am glad you finally found the problem, I think we all must be careful of
this type of problem.

Thanks

Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
| Reply-To: "Omar" <none>
| From: "Omar" <none>
| References: <[email protected]>
| Subject: Re: problem binding comboBox to dataset
| Date: Thu, 9 Oct 2003 12:16:35 -0500
| Lines: 48
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <#[email protected]>
| Newsgroups: microsoft.public.dotnet.languages.csharp
| NNTP-Posting-Host: 66-50-71-48.prtc.net 66.50.71.48
| Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP12.phx.gbl
| Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:190286
| X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
|
| I finally found the answer. Apparently, the field in
| comboBox.DisplayMember is case-sensitive (at least for SQL Server 2000).
| The funny thing is that the sql statement used to fill the dataset is
*not*
| case-sensitive.
|
| Thanks again for the help.
|
|
| "Omar" <none> wrote in message
| > When I try to databind my comboBox (specifically field "emplcode") to a
| > filled dataset , the contents of the comboBox displays a bunch of
| > "System.Data.DataRowView". I assume the amount of times
| > "System.Data.DataR..." is displayed inside the combobox is the amount of
| > records in the dataset. On the other hand, if my query is "select
emplcode
| > from payemployee", the databind will work fine (but I don't want to
limit
| > the dataset to one field). Any help is appreciated. This is the code:
| >
| > DataSet DS_Employees = new DataSet();
| >
| > SqlConnection SQLConn = new SqlConnection("Data Source=localhost;
| Integrated
| > Security=SSPI;" +
| >
| > "Initial Catalog=payroll");
| >
| > string strThisQuery = "select * from payemployee"; //If the query were
| > "select emplcode from payemployee" it works
| >
| > SqlDataAdapter DA_empl = new SqlDataAdapter (strThisQuery, SQLConn);
| >
| > DA_empl.Fill(DS_Employees, "payemployee"); //Do I need the 2nd
parameter?
| >
| > SQLConn.Close();
| >
| > comboBox_emplcode.DataSource = DS_Employees.Tables["payemployee"];
| >
| > comboBox_emplcode.DisplayMember = "emplcode"; //I also tried
| > comboBox_emplcode.DisplayMember = "payemployee.emplcode";
| >
| >
| >
| > Thanks again,
| >
| > Omar
| >
| >
|
|
|
 
Back
Top