I needed a picklist implementation that involved a Listbox on the left and a Listbox on the right. With buttons in the middle to move items from the left to the right to the left, up and down within the Listbox, etc. I've programmed similar implementations, including my tree select demo. But my client had an existing control from Fluent Consulting.
The control is the List Transfer control. I was amazed at how easily I could implement the code.
In the code in front, simply register the control:
<%@ Register Assembly="Fluent.ListTransfer" Namespace="Fluent" TagPrefix="cc1" %>
<cc1:ListTransfer Runat="server" ID="lstClientTransferCodes" ListControlFrom="lstAvailable" ListControlTo="lstSelected" EnableClientSide="true" />
And in the code behind, simply add "onclick" attributes to the buttons:
The rest, setting up the lists, binding the data, etc., didn't need to change at all.
All I had to do was add those 6 lines of code and boom, it was done!
I highly recommend this product!
I used this for client side transfer of data, but it also supports server side. View the demo here!
They describe the ListTransfer as "The ListTransfer control simplifies the transfer of ListItems between two ListControls. With this control you can easily create double listboxes or use several in combination."
Here are the remainder of their controls:
In our final Section 9 of this tutorial by Nannette Thacker, we learn how to use our TableAdapters within our code. We also look at how Intellisense makes it easy to set up your TableAdapter code.
In Section 8 of this tutorial by Nannette Thacker, we take a look at adding a OleDbDataReader and the ExecuteReader method to retrieve data from an Excel Spreadsheet.
In Section 7 of this tutorial by Nannette Thacker, we learn how to create a select query statement in our table adapter and pass parameters to it. We learn how to create an insert query, use a "SELECT SCOPE_IDENTITY()" to retrieve the identity key value returned, and set our ExecuteMode to "Scalar" in our properties sheet.
In Section 6 of this tutorial by Nannette Thacker, we learn how to retrieve data from an uploaded spreadsheet, and import it into a SQL Server database. We will create a Data Access Layer DataSet and some TableAdapters. We will learn how to add a data connection to our web.config. We will learn how to create SQL Statements in our TableAdapters and use the Query Builder.
In Section 5 of this tutorial by Nannette Thacker, we will learn how to create a connection to our Excel Spreadsheet using an OleDbConnection with a Microsoft.Jet.OLEDB Connection String. We will learn how to create a SELECT query to retrieve data from a given Excel worksheet using an OleDbCommand. We will populate and bind our data to our GridView using an OleDbDataAdapter and DataSet.
We will also look at using Server.MapPath to find a physical directory on the server.
In Section 4 of this tutorial by Nannette Thacker, we will learn how to add and Auto Format a GridView in our WebForm. We will also learn how to create and add a Cascading Style Sheet to our project.
We will learn more about the Design view, and look at applying a scheme via the AutoFormat functionality of the GridView.
In Section 3 of this tutorial by Nannette Thacker, we are going to look at the "FileUpload" control. We will discuss how to set a Label text value and set Panel visibility from Codebehind. We will also learn how to use the Handles key word at the end of our procedure declarations to handle our Button Click events. We will also view a snippet of code that uses error handling through Try/Catch/Finally.
In Section 2 of this tutorial by Nannette Thacker, we learn how to work with our WebForm and define the properties of an ASP.NET Table control to layout our buttons. We will learn how to add controls for Buttons, Panels and Labels.
We will learn a little bit about the Design mode, by creating our Tables using the Design mode.
In Section 1 of this tutorial by Nannette Thacker, we learn how to create a project and our SQL Server Database Tables using Visual Web Developer or Visual Studio 2005 or 2008. We will look at the design of our Excel Spreadsheet and create a new database and tables for our imported data.
We learn how to use the Solution Explorer (Solution Explorer in VWD and Server Explorer in Visual Studio), and use the Database Explorer. We learn how to add a table, set a primary key, and use the Identity Specifications property when creating a table column.
A GUID, (which may be pronounced goo-id or gwid), is a globally unique identifier.
The guid is a sequence of hexademical digits and looks something like this:
I’ve heard developers say that it is unique world-wide, yep, globally. But is it? I decided to do some research and find out based on other’s experience.
Wikipedia says “While each generated GUID is not guaranteed to be unique, the total number of unique keys (2128 or 3.4×1038) is so large that the probability of the same number being generated twice is very small.”
Hmm. Okay. But how about real-world experience? I am still skeptical. I find this sentence about GUIDs in an article by Scott Mitchell. A reader of Scott’s, Rusty Alderson, shares:
"In creating very large databases, GUIDs (as generated by MS's NEWID() function) WILL have collisions, or duplicates. In a previous project where I was building a large Customer ODS (Operational Data Store), I typically found about 4 collisions per million rows. Code has to be developed to handle this. This was in SQL Server 2000. Perhaps SQL Server 2005 has remedied this."
So there you have it. GUIDs are not globally unique. So now that we are in SQL Server 2008, what’s the verdict? Anyone working with millions of rows having collisions?
Here is a great example of working with stored procedures in your asp.net code.