Eric Barro
ebarro at verizon.net
Sat Apr 28 01:14:24 CDT 2007
This is my snippet of code should give you an idea...it is however in C# and specific to ASP.NET (web-based). It should be fairly easy to port it over to VB.NET and change a couple of lines to be Win32 specific. The function is a public method stored in my Data class... public static int BindDropDownList(DropDownList ddl, string sql, string sqlConnect, Hashtable sqlParameters, string ddlTextField, string ddlValueField, bool showDefaultSelection) { DataSet sqlDs; //count of records returned int totalRecords; //grab the connection string string ConnectionString = ConfigurationSettings.AppSettings.Get(sqlConnect); //define and initialize the connection object SqlConnection sqlConn = new SqlConnection(ConnectionString); //define and initialize the command object SqlCommand sqlCmd = new SqlCommand(sql, sqlConn); //define the command type sqlCmd.CommandType = CommandType.StoredProcedure; if (sqlParameters.Count > 0) { //get a collection of the keys ICollection sqlParams = sqlParameters.Keys; foreach (string key in sqlParams) { // add parameters to pass to the sproc sqlCmd.Parameters.Add(new SqlParameter(key, sqlParameters[key].ToString())); } } //open the connection sqlConn.Open(); //define the data adapter SqlDataAdapter sqlDa = new SqlDataAdapter(); //define the select command sqlDa.SelectCommand = sqlCmd; //initialize the dataset sqlDs = new DataSet("MyList"); //fill the dataset sqlDa.Fill(sqlDs, "MyList"); //define a session variable containing our dataset System.Web.HttpContext.Current.Session["MyList"] = sqlDs; //grab the total number of records returned by the sproc totalRecords = sqlDs.Tables[0].Rows.Count; if (totalRecords > 0) { if (showDefaultSelection) { DataRow newListRow = sqlDs.Tables[0].NewRow(); //this is the value that shows on the dropdownlist //specify an option that will be the default selection newListRow[ddlTextField] = "--Please select one--"; //this is the value that will be posted to the database newListRow[ddlValueField] = 0; //add the new row sqlDs.Tables[0].Rows.Add(newListRow); //specify a sort order based on ddlValueField; this ensures that the newly added row will show up at the top sqlDs.Tables[0].DefaultView.Sort = ddlValueField; } //close the connection ddl.DataSource = sqlDs.Tables[0].DefaultView; ddl.DataTextField = ddlTextField; ddl.DataValueField = ddlValueField; ddl.DataBind(); sqlConn.Close(); } return totalRecords; } //end BindDropDownList This is how I call it... Data.BindDropDownList(uxZipCodeList, sql, connectionString, sqlParameters, "ZipCity", "ZipCode", true); ZipCity is what I use to display in the dropdownlist and ZipCode is what I use to lookup and store values. I believe this is referred to as DisplayMember and ValueMember in Win32 comboboxes. In my SQL stored procedure I simply make sure that ZipCity is concatenated with whatever value I want to show in the dropdownlist. -----Original Message----- From: dba-vb-bounces at databaseadvisors.com [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of JWColby Sent: Friday, April 27, 2007 10:35 PM To: dba-vb at databaseadvisors.com Subject: [dba-VB] Combo box I am running into the issue of how to display multiple lines in a combo box. IIRC this is a "no can do" in the combos in VB.Net but there must be common workarounds. For example I need to allow the user to select a zip code, but he really needs to see the zip AND the city. Furthermore my code is going to need to load a record based on that zip code to get lat/long. So, is there a way other than using a concatenation of the zip and the city to display both in the combo? If I do a concatenation, then I can no longer use the zip to lookup a record in a recordset since it now has city data in the string. John W. Colby Colby Consulting www.ColbyConsulting.com _______________________________________________ dba-VB mailing list dba-VB at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-vb http://www.databaseadvisors.com No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.467 / Virus Database: 269.6.1/777 - Release Date: 4/26/2007 3:23 PM