Binding a Datareader to Dropdown

B

Brian Conway

I need some help on binding a datareader to a dropdown box. I have included
the code for the dropdown below. It builds with no errors, but returns no
results. Any help would be appreciated.

private void DropDownList1_SelectedIndexChanged(object sender,
System.EventArgs e)

{

OleDbConnection conn = new OleDbConnection("DataSource=ntdrp001.world;
integrated security =true;"+ "initial catalog = Request");

conn.Open();

OleDbCommand cmd = new OleDbCommand("SELECT distinct(cuid) from Request",
conn);


OleDbDataReader dreader = cmd.ExecuteReader();

DropDownList1.DataSource = dreader;

DropDownList1.DataValueField = "cuid";

DropDownList1.DataTextField = "cuid";

DropDownList1.SelectedIndex = 0;

DropDownList1.DataBind();

dreader.Close();

conn.Close();

}
 
B

Ben Dewey

First off you need to add the Databind code to the Page_Load section of the
code, not the SelectedIndex Changed section.

Also, the biggest mistake people make when binding data to a dropdown is
that they rebind the data on every Page_Load. So be sure that in your
page_load section of the code you wrap the binding inside an if
(!Page.IsPostBack) block.

So it should look like this:
private void DropDownList1_SelectedIndexChanged(object sender,
System.EventArgs e)
{
// Do something with the changed value
}

private void Page_Load(object sender, System.EventArgs e)
{
if ( !Page.IsPostBack )
{
OleDbConnection conn = new
OleDbConnection("DataSource=ntdrp001.world;
integrated security =true;"+ "initial catalog = Request");
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT distinct(cuid) from
Request",
conn);

OleDbDataReader dreader = cmd.ExecuteReader();
DropDownList1.DataSource = dreader;
DropDownList1.DataValueField = "cuid";
DropDownList1.DataTextField = "cuid";
DropDownList1.SelectedIndex = 0;
DropDownList1.DataBind();
dreader.Close();
conn.Close();
}
}
 
M

Marina

You put the code in the SelectedIndexChanged event of the dropdown. That
means you first have to select something from the dropdown, then you need to
go back to the server, and only then will this code run.

Are you sure this is the event you want to place this code in?
 
B

Brian Conway

Ok now I am getting the following error upon moving the code.

Server Error in '/Conference Request' Application.
----------------------------------------------------------------------------
----

No error information available: REGDB_E_CLASSNOTREG(0x80040154).
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: No error information
available: REGDB_E_CLASSNOTREG(0x80040154).

Source Error:

Line 62: {
Line 63: OleDbConnection conn = new
OleDbConnection("Provider=ntdrp001.world; integrated security =true;"+
"initial catalog = Request");
Line 64: conn.Open();
Line 65: OleDbCommand cmd = new OleDbCommand("SELECT distinct(cuid) from
Request", conn);
Line
 
M

Marina

You didn't say which line is causing it, I'm guess the connection cannot be
opened. More then likely, it is the integrated security part. You probably
don't have the proper permissions set up for the ASPNET user to be able to
connect to the database.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,990
Messages
2,570,211
Members
46,796
Latest member
SteveBreed

Latest Threads

Top