My radGrid displays data from a SQL Server 2008 data source. Because the information is proprietary I have have had to blot out any real information but I have left what is needed to show you the issue I am seeing.
When the radGrid is populated everything works great. Data lines up properly in all columns, when you hover on the link a radTooltip popup out displaying information.
But when you sort on any column, the columns stop lining up because it looks like "word wrapping" gets turned off. So instead of one of our Agency names wrapping and displaying on two lines in the grid column it is shown on one line. This would be fine if I could get this to be consistent for all columns and column headers. The agency name is pushed into the next 2 columns data so that data is pushed over as well.
I have attached two screenshots showing what I am talking about. As you can see in the Before.png, everything looks and works fine including the tooltip. After sorting, the Agent Name column spans well into the 3rd column over, SCAC. Also, strangely after sorting my tooltip ceases working.
How do I get my columns to stay lined up and can anyone answer why the tooltip breaks when the data is sorted?
search.ascx
<telerik:RadAjaxManager ID="radAM" runat="server"> |
<AjaxSettings> |
<telerik:AjaxSetting AjaxControlID="radRadiusSearch"> |
<UpdatedControls> |
<telerik:AjaxUpdatedControl ControlID="radRadiusSearch" LoadingPanelID="radALP" /> |
<telerik:AjaxUpdatedControl ControlID="radTTM" /> |
</UpdatedControls> |
</telerik:AjaxSetting> |
</AjaxSettings> |
</telerik:RadAjaxManager> |
<telerik:RadAjaxLoadingPanel ID="radALP" runat="server"></telerik:RadAjaxLoadingPanel> |
<telerik:RadToolTipManager ID="radTTM" runat="server" OffsetY="-1" HideEvent="LeaveToolTip" |
Width="300" Height="75" OnAjaxUpdate="OnAjaxUpdate" RelativeTo="Element" Position="BottomRight" Skin="Windows7"> |
</telerik:RadToolTipManager> |
<telerik:RadGrid ID="radRadiusSearch" runat="server" |
AllowSorting="True" AllowPaging="True" |
width="950px" AutoGenerateColumns="False" |
Skin="Windows7" |
EnableViewState="False" Visible="False"> |
<MasterTableView Width="950px" AllowMultiColumnSorting="true" DataKeyNames="AgentNumber" CommandItemDisplay="None" CurrentResetPageIndexAction="SetPageIndexToFirst" Dir="LTR" Frame ="Border" TableLayout="Auto"> |
<Columns> |
<telerik:GridBoundColumn CurrentFilterFunction="NoFilter" DataField="AgentNumber" Display="false" |
DataType="System.String" FilterListOptions="VaryByDataType" ForceExtractValue="None" |
HeaderText="Agent #" ReadOnly="True" SortExpression="AgentNumber" UniqueName="AgentNumber"> |
</telerik:GridBoundColumn> |
<telerik:GridTemplateColumn HeaderText="Agent #" SortExpression="AgentNumber"> |
<ItemTemplate> |
<asp:HyperLink ID="targetControl" runat="server" NavigateUrl="#" Text='<%# Eval("AgentNumber") %>'></asp:HyperLink> |
</ItemTemplate> |
</telerik:GridTemplateColumn> |
<telerik:GridBoundColumn DataField="AgentName" DataType="System.String" HeaderText="Agent Name" SortExpression="AgentName" UniqueName="AgentName" /> |
<telerik:GridBoundColumn DataField="WhseCity" DataType="System.String" HeaderText="City" SortExpression="WhseCity" UniqueName="WhseCity" /> |
<telerik:GridBoundColumn DataField="WhseState" DataType="System.String" HeaderText="St" SortExpression="WhseState" UniqueName="WhseState" /> |
<telerik:GridBoundColumn DataField="PrimeSCAC" DataType="System.String" HeaderText="SCAC" SortExpression="PrimeSCAC" UniqueName="PrimeSCAC" /> |
<telerik:GridBoundColumn DataField="AgentClass" DataType="System.String" HeaderText="Class" SortExpression="AgentClass" UniqueName="AgentClass" /> |
<telerik:GridBoundColumn DataField="Miles" DataType="System.String" HeaderText="Miles" SortExpression="Miles" UniqueName="Miles" /> |
<telerik:GridBoundColumn DataField="DP3_OA_COUNT" DataType="System.String" HeaderText="OA" SortExpression="DP3_OA_COUNT" UniqueName="DP3_OA_COUNT" /> |
<telerik:GridBoundColumn DataField="DP3_HLG_COUNT" DataType="System.String" HeaderText="HLG" SortExpression="DP3_HLG_COUNT" UniqueName="DP3_HLG_COUNT" /> |
<telerik:GridBoundColumn DataField="DP3_DA_COUNT" DataType="System.String" HeaderText="DA" SortExpression="DP3_DA_COUNT" UniqueName="DP3_DA_COUNT" /> |
<telerik:GridBoundColumn DataField="DP3_Q4_PERC" DataType="System.String" HeaderText="Q4%" SortExpression="DP3_Q4_PERC" UniqueName="DP3_Q4_PERC" /> |
<telerik:GridBoundColumn DataField="DP3_Q5_PERC" DataType="System.String" HeaderText="Q5%" SortExpression="DP3_Q5_PERC" UniqueName="DP3_Q5_PERC" /> |
<telerik:GridBoundColumn DataField="DP3_Q6_PERC" DataType="System.String" HeaderText="Q6%" SortExpression="DP3_Q6_PERC" UniqueName="DP3_Q6_PERC" /> |
<telerik:GridBoundColumn DataField="DP3_Q7_PERC" DataType="System.String" HeaderText="Q7%" SortExpression="DP3_Q7_PERC" UniqueName="DP3_Q7_PERC" /> |
<telerik:GridBoundColumn DataField="DP3_Q8_PERC" DataType="System.String" HeaderText="Q8%" SortExpression="DP3_Q8_PERC" UniqueName="DP3_Q8_PERC" /> |
<telerik:GridBoundColumn DataField="ClaimsTotalShipments" DataType="System.String" HeaderText="12 Mth Cnt" SortExpression="ClaimsTotalShipments" UniqueName="ClaimsTotalShipments" /> |
<telerik:GridBoundColumn DataField="QltyRatingDisplay" DataType="System.String" HeaderText="Qlty Rating" SortExpression="QltyRatingDisplay" UniqueName="QltyRatingDisplay" /> |
</Columns> |
<EditFormSettings> |
<EditColumn CurrentFilterFunction="NoFilter" FilterListOptions="VaryByDataType"> |
</EditColumn> |
</EditFormSettings> |
</MasterTableView> |
<ClientSettings> |
<Scrolling AllowScroll="True" UseStaticHeaders="true" /> |
</ClientSettings> |
</telerik:RadGrid> |
search.ascx.vb
Protected Sub OnAjaxUpdate(ByVal sender As Object, ByVal args As ToolTipUpdateEventArgs) |
Me.UpdateToolTip(args.Value, args.UpdatePanel) |
End Sub |
Private Sub UpdateToolTip(ByVal elementID As String, ByVal panel As UpdatePanel) |
Dim ctrl As Control = Page.LoadControl("~/UserControls/Beta/AgentDetails.ascx") |
panel.ContentTemplateContainer.Controls.Add(ctrl) |
Dim details As UserControls_Beta_AgentDetails = DirectCast(ctrl, UserControls_Beta_AgentDetails) |
details.AgentNumber = elementID |
End Sub |
Protected Sub radRadiusSearch_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles radRadiusSearch.ItemDataBound |
If TypeOf e.Item Is GridDataItem Then |
Dim item As GridDataItem = DirectCast(e.Item, GridDataItem) |
Dim strAN As String = item("AgentNumber").Text |
Dim strMiles As String = item("Miles").Text |
Dim intMiles As Integer = 0 |
Dim strOA As String = item("DP3_OA_COUNT").Text |
Dim strHLG As String = item("DP3_HLG_COUNT").Text |
Dim strDA As String = item("DP3_DA_COUNT").Text |
Dim strQ4 As String = item("DP3_Q4_PERC").Text |
Dim strQ5 As String = item("DP3_Q5_PERC").Text |
Dim strQ6 As String = item("DP3_Q6_PERC").Text |
Dim strQ7 As String = item("DP3_Q7_PERC").Text |
Dim strQ8 As String = item("DP3_Q8_PERC").Text |
Dim strQlty As String = item("QltyRatingDisplay").Text |
Dim target As Control = e.Item.FindControl("targetControl") |
Dim targetLink As HyperLink = e.Item.FindControl("targetControl") |
targetLink.NavigateUrl = "~/Tools/RadiusSearch-DP3/ShowAgent.aspx?AgentNumber=" & strAN |
If Not [Object].Equals(target, Nothing) Then |
If Not [Object].Equals(Me.radTTM, Nothing) Then |
Me.radTTM.TargetControls.Add(target.ClientID, (TryCast(e.Item, GridDataItem)).GetDataKeyValue("AgentNumber").ToString(), True) |
End If |
End If |
If Len(strMiles) > 0 Then intMiles = CInt(strMiles) |
item("Miles").Text = Math.Round(intMiles) |
strQlty = Replace(strQlty, "-ACCEPTABLE", "") |
strQlty = Replace(strQlty, "-UNKNOWN", "") |
strQlty = Replace(strQlty, "-UNACCEPTABLE", "") |
item("QltyRatingDisplay").Text = strQlty |
End If |
End Sub |
Protected Sub radRadiusSearch_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles radRadiusSearch.ItemCommand |
If e.CommandName = "Sort" OrElse e.CommandName = "Page" Then |
radTTM.TargetControls.Clear() |
End If |
End Sub |
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender |
'Version 2 - 5/6/2010 |
radRadiusSearch.PageSize = 25 |
radRadiusSearch.ClientSettings.Scrolling.SaveScrollPosition = False |
radRadiusSearch.ClientSettings.Scrolling.FrozenColumnsCount = 2 |
If IsPostBack Then |
Dim strZip As String = radZip.Text |
Dim strCity As String = radCity.Text |
Dim strState As String = radState.Text |
Dim strMiles As String = radMiles.Text |
Dim sqlConn As New SqlConnection |
Dim sqlCmd As New SqlCommand |
sqlConn.ConnectionString = ConfigurationManager.ConnectionStrings("zip_codesConnectionString").ConnectionString |
sqlConn.Open() |
If (Len(strZip) > 0 And Len(strMiles) > 0) Or (Len(strCity) > 0 And Len(strState) > 0 And Len(strMiles) > 0) Then |
If Len(strZip) > 0 Then |
sqlCmd = New SqlCommand("_Radius_AgentSearch_DP3_ByZip", sqlConn) |
sqlCmd.CommandType = Data.CommandType.StoredProcedure |
sqlCmd.Parameters.AddWithValue("@ZipCode", strZip) |
sqlCmd.Parameters.AddWithValue("@Miles", strMiles) |
Else |
sqlCmd = New SqlCommand("_Radius_AgentSearch_DP3_ByCityState", sqlConn) |
sqlCmd.CommandType = Data.CommandType.StoredProcedure |
sqlCmd.Parameters.AddWithValue("@City", strCity) |
sqlCmd.Parameters.AddWithValue("@State", strState) |
sqlCmd.Parameters.AddWithValue("@Miles", strMiles) |
End If |
radRadiusSearch.DataSource = sqlCmd.ExecuteReader |
radRadiusSearch.DataBind() |
radRadiusSearch.Visible = True |
Else |
radRadiusSearch.Visible = False |
End If |
End If |
End Sub |
Protected Sub cmdSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click |
radRadiusSearch.CurrentPageIndex = 0 |
End Sub |