I want to use a gridview to load a set of associated
records dynamically based upon the input of the user.
I want the gridview to have a checkbox to the left of
the records and allow the user to use this to select
records to remove. The gridview will have pages and will
be sortable using the columns.
I had this working using a delete button, but when I went to using the checkbox it stopped sorting.
I'll try to make this a bit clearer.
1) A user enters in a bulk list of customer Ids
2) This add the customers to the grid, ID#, First Name, Last, etc.
3) After adding the customers, the user can then remove
selected customers. Originally this was done by the delete record link (which worked) but they want to be able to change their mind and use a checkbox to select and unselect which ones to delete.
4) Preferably they can page up and down the list, sort the list, etc while preserving the checkbox status, but they will live with a single page operation.
5) They want to be able to sort records based on columns.
I had this working before, but once I went to the checkbox version the sorting functioning broke!
So, what I'm seeking is an example of a page, using the gridview, with checkboxs and sortable columns that is not tied to a data source but is dynamically populated.
And if it makes a difference, I have the grid in a container of a website using a master page.
(Example of some of the code that I was using before to
create the original pages.)
Expand|Select|Wrap|Line Numbers
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- If Me.IsPostBack = False Then
- If Session("dtNewIntcodes") IsNot Nothing Then
- Dim dt As DataTable = FormatProjectDataTable()
- dt = Session("dtNewIntcodes")
- gvCollectionList.DataSource = dt.DefaultView
- gvCollectionList.DataBind()
- End If
- End If
- End Sub
- Protected Function FormatProjectDataTable() As DataTable
- Dim dt As DataTable = New DataTable()
- ' Create Columns
- dt.Columns.Add("Intcode", System.Type.GetType("System.String"))
- dt.Columns.Add("First Name", System.Type.GetType("System.String"))
- dt.Columns.Add("Last Name", System.Type.GetType("System.String"))
- Dim PKColumn(0) As DataColumn
- PKColumn(0) = dt.Columns("Intcode")
- dt.PrimaryKey = PKColumn
- Return dt
- End Function
- Private Sub AddInterview(ByVal Intcode As Integer)
- Dim dt As DataTable = FormatProjectDataTable()
- Dim dr As DataRow
- Dim Conn As String
- Conn = "..........." ' Removed for example
- 'Create a connection to the database
- Dim objConn
- objConn = Server.CreateObject("ADODB.Connection")
- objConn.Open(Conn)
- If Session("dtNewIntcodes") IsNot Nothing Then dt = Session("dtNewIntcodes")
- Dim strSQL As String
- strSQL = "SELECT * FROM Custtable where intcode = " & Intcode.ToString
- Dim objRS
- objRS = Server.CreateObject("ADODB.Recordset")
- objRS.Open(strSQL, objConn)
- '
- Do While Not objRS.EOF
- dr = dt.NewRow
- dr("Intcode") = Right(" " + CStr(objRS("Intcode").value), 6)
- dr("First Name") = objRS("FirstName").value
- dr("Last Name") = objRS("LastName").value
- dt.Rows.Add(dr)
- objRS.MoveNext()
- Loop
- dt.AcceptChanges()
- objConn.close()
- Session("dvNewIntcodes") = dt.DefaultView
- Session("dtNewIntcodes") = dt
- gvCollectionList.DataSource = dt.DefaultView
- gvCollectionList.DataBind()
- End Sub