I dynamically build my RadGrid, but it lost sorting and paging functionality.
How can I program it?
This is my code;
Aspx page:
<telerik:RadGrid ID="RadGrid1" runat="server" Style="margin-bottom: 0px"
EnableViewState="true" Width="1145px" AllowPaging="True" AllowSorting="True" Skin="Gray"
DataSourceID="SqlDataSource1" AutoGenerateColumns="False" >
<HeaderContextMenu>
<CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation>
</HeaderContextMenu>
<MasterTableView>
<RowIndicatorColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
</MasterTableView>
<FilterMenu>
<CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation>
</FilterMenu>
</telerik:RadGrid>
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ></asp:SqlDataSource>
Vb page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not IsPostBack) Then
Loaddata()
End If
End Sub
Private Sub Loaddata()
Dim strSQl As String
strSQl = "Select Pro ,ShipperName as [Shipper Name],BL as [Bill of Lading],convert(varchar(10),PUDate,101) as [Pickup Date]," & _
" ConsigneeName as Consignee, PO as [Purchase Order],convert(varchar(10),DELDate,101) as [Delivery Date]," & _
" convert(varchar(10),convert(money,charge))as Charge, ConsigneeCode,ShipperCode,DateInvoiced,BillToCode,PmtType,t.COMPANY," & _
" c.ThirdPartyFlag as thirdPartyFlag from ShipmentTracking.dbo.ltlprodata3 as t with (nolock) " & _
" inner join CustomerMaster.dbo.MainframeCustomers as c with (nolock) " & _
" on (c.company = t.company and t.billtocode = c.[cust no]) " & _
" where ( DELDATE >= '5/26/2009' and DELDATE <= '6/26/2009' and t.company='p1') and " & _
" ((pmttype ='P' and (ShipperCode = 'FEED84' or BillToCode = 'FEED84') and c.ThirdPartyFlag = 0) " & _
" or (pmttype ='C' and (ConsigneeCode = 'FEED84' or BillToCode = 'FEED84') and c.ThirdPartyFlag = 0) " & _
" or (pmttype <> 'F' and BillToCode = 'FEED84' and c.ThirdPartyFlag = 1)) " & _
" ORDER BY Pro;"
FillGrid(strSQl)
End Sub
Sub FillGrid(ByVal strSQL As String)
Dim dbcon As New SqlConnection
Dim dbCommand As New SqlCommand
Dim strConnectionString As String
Dim errHandler As New ErrorHandler
Dim SQLEscape As New SQLEscape
Dim rdr As SqlDataReader
strConnectionString = System.Configuration.ConfigurationManager.AppSettings.Get("GenericDB")
dbcon.ConnectionString = strConnectionString
dbcon.Open()
'cmd = New SqlCommand
dbCommand.Connection = dbcon
dbCommand.CommandType = CommandType.Text
dbCommand.CommandText = strSQL
rdr = dbCommand.ExecuteReader()
'RadGrid1.Columns.Clear()
SqlDataSource1.ConnectionString = strConnectionString
SqlDataSource1.SelectCommand = strSQL
Dim Pro As New GridHyperLinkColumn
Dim dataNavigateUrlFields() As String = {"Pro"}
Pro.DataTextField = "Pro"
Pro.DataNavigateUrlFields = dataNavigateUrlFields
Pro.HeaderText = "Pro"
Pro.SortExpression = "Pro"
Pro.DataNavigateUrlFormatString = "../MyPyle/MyPyleLTLTracking.aspx?Pro={0}"
'***************
Dim Shipper As New GridHyperLinkColumn
Dim dataNavigateUrlFields1() As String = {"Shipper", "ShipperCode"}
Shipper.ItemStyle.HorizontalAlign = HorizontalAlign.Left
Shipper.DataTextField = "[Shipper Name]"
Shipper.SortExpression = "Shipper"
Shipper.DataNavigateUrlFields = dataNavigateUrlFields1
Shipper.HeaderText = "Shipper"
Shipper.Target = "_blank"
Shipper.DataNavigateUrlFormatString = "../publicdocs/WhoAmI.aspx?Account=P1{0}"
Dim ShipperCode As New GridBoundColumn
ShipperCode.ItemStyle.HorizontalAlign = HorizontalAlign.Left
ShipperCode.DataField = "ShipperCode"
ShipperCode.HeaderText = "ShipperCode"
Shipper.DataNavigateUrlFormatString = "../publicdocs/WhoAmI.aspx?Account=P1{1}"
Dim Consignee As New GridHyperLinkColumn
Dim dataNavigateUrlFields2() As String = {"Consignee", "ConsigneeCode"}
Consignee.ItemStyle.HorizontalAlign = HorizontalAlign.Left
Consignee.DataTextField = "Consignee"
Consignee.SortExpression = "Consignee"
Consignee.DataNavigateUrlFields = dataNavigateUrlFields2
Consignee.HeaderText = "Consignee"
Consignee.Target = "_blank"
Consignee.DataNavigateUrlFormatString = "../publicdocs/WhoAmI.aspx?Account=P1{0}"
Dim ConsigneeCode As New GridBoundColumn
ConsigneeCode.ItemStyle.HorizontalAlign = HorizontalAlign.Left
ConsigneeCode.DataField = "ConsigneeCode"
ConsigneeCode.HeaderText = "ConsigneeCode"
Consignee.DataNavigateUrlFormatString = "../publicdocs/WhoAmI.aspx?Account=P1{1}"
Dim BillofLading As New GridBoundColumn
BillofLading.DataField = "Bill of Lading"
BillofLading.SortExpression = "Bill of Lading"
BillofLading.HeaderText = "Bill of Lading"
BillofLading.ItemStyle.HorizontalAlign = HorizontalAlign.Left
Dim PickupDate As New GridBoundColumn
PickupDate.ItemStyle.HorizontalAlign = HorizontalAlign.Left
PickupDate.DataField = "Pickup Date"
PickupDate.HeaderText = "Pickup Date"
PickupDate.SortExpression = "Pickup Date"
Dim PurchaseOrder As New GridBoundColumn
PurchaseOrder.ItemStyle.HorizontalAlign = HorizontalAlign.Left
PurchaseOrder.DataField = "Purchase Order"
PurchaseOrder.HeaderText = "Purchase Order"
PurchaseOrder.SortExpression = "Purchase Order"
Dim DeliveryDate As New GridBoundColumn
DeliveryDate.ItemStyle.HorizontalAlign = HorizontalAlign.Left
DeliveryDate.DataField = "Delivery Date"
DeliveryDate.SortExpression = "Delivery Date"
DeliveryDate.HeaderText = "Delivery Date"
Dim charge As New GridHyperLinkColumn
charge.ItemStyle.HorizontalAlign = HorizontalAlign.Left
Dim dataNavigateUrlFields3() As String = {"charge"}
charge.DataTextField = "Charge"
charge.SortExpression = "Charge"
charge.DataNavigateUrlFields = dataNavigateUrlFields
charge.HeaderText = "Charge"
charge.Target = "_blank"
charge.DataNavigateUrlFormatString = "../MyPyle/InvoicePDFGenerator.aspx?Pro={0}"
Me.RadGrid1.MasterTableView.Columns.Add(Pro)
Me.RadGrid1.MasterTableView.Columns.Add(ShipperCode)
Me.RadGrid1.MasterTableView.Columns.Add(Shipper)
Me.RadGrid1.MasterTableView.Columns.Add(BillofLading)
Me.RadGrid1.MasterTableView.Columns.Add(PickupDate)
Me.RadGrid1.MasterTableView.Columns.Add(Consignee)
Me.RadGrid1.MasterTableView.Columns.Add(PurchaseOrder)
Me.RadGrid1.MasterTableView.Columns.Add(DeliveryDate)
Me.RadGrid1.MasterTableView.Columns.Add(charge)
Dim objDR As System.Data.DataRow
Dim objDT As System.Data.DataTable
Dim srtDV As System.Data.DataView
objDT = New System.Data.DataTable("Charges")
' create data table
objDT.Columns.Add("Pro", GetType(String))
objDT.Columns.Add("shippercode", GetType(String))
objDT.Columns.Add("Shipper", GetType(String))
objDT.Columns.Add("Bill of Lading", GetType(String))
objDT.Columns.Add("Pickup Date", GetType(String))
objDT.Columns.Add("ConsigneeCode", GetType(String))
objDT.Columns.Add("Purchase Order", GetType(String))
objDT.Columns.Add("Delivery Date", GetType(String))
objDT.Columns.Add("charge", GetType(String))
objDT.Columns.Add("consignee", GetType(String))
If rdr.HasRows Then
Do While rdr.Read
objDR = objDT.NewRow
objDR("Pro") = rdr(0)
objDR("shippercode") = rdr(9)
objDR("Shipper") = rdr(1)
objDR("Bill of Lading") = rdr(2)
objDR("Pickup Date") = rdr(3)
objDR("ConsigneeCode") = rdr(8)
objDR("Purchase Order") = rdr(5)
objDR("Delivery Date") = rdr(6)
If IsDBNull(rdr(7)) Then
objDR("charge") = 0
Else
objDR("charge") = rdr(7)
End If
objDR("consignee") = rdr(4)
objDT.Rows.Add(objDR)
'End If
Loop
End If
srtDV = objDT.DefaultView
srtDV.Sort = "Pro"
Session("dt") = objDT
RadGrid1.DataBind()
End Sub
Someone suggested to create datatable and dataview, because you can only sort on dataview, I tried to add some code on, but nothing happened
Protected Sub RadGrid1_SortCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridSortCommandEventArgs) Handles RadGrid1.SortCommand
Response.Write("Sort")
'Dim tableView As GridTableView = e.Item.OwnerTableView
'If tableView.DataSourceID = "SqlDataSource1" AndAlso e.SortExpression = "Pro" Then e.Canceled = True
'Dim expression As New GridSortExpression()
'expression.FieldName = "Pro"
'If tableView.SortExpressions.Count = 0 OrElse _
' tableView.SortExpressions(0).FieldName <> "Pro" Then
' expression.SortOrder = GridSortOrder.Descending
'ElseIf tableView.SortExpressions(0).SortOrder = GridSortOrder.Descending Then
' expression.SortOrder = GridSortOrder.Ascending
'ElseIf tableView.SortExpressions(0).SortOrder = GridSortOrder.Ascending Then
' expression.SortOrder = GridSortOrder.None
'End If
'tableView.SortExpressions.AddSortExpression(expression)
'tableView.Rebind()
'Loaddata()
End Sub
Thank you.
Galina