Hi Vladimir,
The sample code I am posting here.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ExtDataLinksTest.aspx.vb" Inherits="Testing_ExtDataLinksTest" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.linkBSpecs
{
color: Blue;
font-weight: bold;
text-decoration: none;
text-align: right;
}
.linkSpecs
{
color: Blue;
text-decoration: none;
}
</style>
<script language="javascript" type="text/javascript">
var updateTotal = function (grid) {
var fbar = grid.getBottomToolbar(),
column,
field,
width,
data = {},
c,
cs = grid.view.getColumnData();
for (var j = 0, jlen = grid.store.getCount(); j < jlen; j++) {
var r = grid.store.getAt(j);
for (var i = 0, len = cs.length; i < len; i++) {
c = cs[i];
column = grid.getColumnModel().columns[i];
if (column.summaryType) {
data[c.name] = Ext.grid.GroupSummary.Calculations[column.summaryType](data[c.name] || 0, r, c.name, data);
}
}
}
for (var i = 0; i < grid.getColumnModel().columns.length; i++) {
column = grid.getColumnModel().columns[i];
if (column.dataIndex != grid.store.groupField) {
field = fbar.findBy(function (item) {
return item.dataIndex === column.dataIndex;
})[0];
if (field) { //added
c = cs[i];
fbar.remove(field, false);
fbar.insert(i, field);
width = grid.getColumnModel().getColumnWidth(i);
field.setWidth(width - 5);
field.setValue((column.summaryRenderer || c.renderer)(data[c.name], {}, {}, 0, i, grid.store));
}
}
}
fbar.doLayout();
}
function linkRenderer(value, meta, record) {
return String.format("<a class='company-link' href='#' onclick='linkClick(\"{1}\");'><b>{0}</b></a>", value, record.id);
}
function linkClick(recordId) {
if (StoreLoans.getById(recordId).get("LOAN_STATUS_TYPE") == "1003 Applications")
OpenPipelineSummary('AllLoans', '1003', '1003');
else if (StoreLoans.getById(recordId).get("LOAN_STATUS_TYPE") == "Loans In Final Statuses")
OpenPipelineSummary('AllLoans', 'LoansInFinal', StoreLoans.getById(recordId).get("LOAN_STATUS"));
else if (StoreLoans.getById(recordId).get("LOAN_STATUS_TYPE") == "Loans In Processing")
OpenPipelineSummary('AllLoans', 'LoansInProcess', StoreLoans.getById(recordId).get("LOAN_STATUS"));
else if (StoreLoans.getById(recordId).get("LOAN_STATUS_TYPE") == "Registered Loans")
OpenPipelineSummary('AllLoans', 'Registered', 'Registered');
}
function linkSummaryRenderer(value, meta, record) {
//alert("value = " + value + " and RecordId " + record.id);
return String.format("<a class='company-link' href='#' onclick='linkTotalClick(\"{1}\");'><b>{0}</b></a>", value, value);
}
function linkTotalClick(recordId) {
OpenPipelineSummary('AllLoans', '1003', '1003');
}
var OpenPipelineSummary = function (screenname, linkinfo, statusinfo) {
var windowConfig = {
id: "WindowPipeLinePopup",
height: 528,
width: 720,
hidden: false,
title: linkinfo,
closeAction: "hide",
buttonAlign: "center",
iconCls: "icon-pagewhitecode",
buttons: [
{
id: "btnWinPipeLineClose",
text: "Close",
listeners: {
click: {
fn: function (el, e) {
//parent.pnlMain.getBody().btnEventAutoRefresh.fireEvent('click');
Ext.getCmp('WindowPipeLinePopup').hide();
}
}
}
}
],
autoLoad: {
url: "ExtPipelineSummary.aspx?" + new Date().getTime(),
nocache: true,
mode: "iframe",
showMask: true,
triggerEvent: "show",
reloadOnEvent: true,
params: {
DEFAULT_TO_OPEN: screenname,
LOANSTATUS_TO_OPEN: linkinfo,
LOANSTATUS: statusinfo
}
}
}
renderWindow(windowConfig);
}
var renderWindow = function (windowConfig) {
var win = Ext.getCmp(windowConfig.id);
if (!win) {
new Ext.Window(windowConfig);
} else {
win.close();
new Ext.Window(windowConfig);
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<ext:Store ID="StoreLoans" runat="server" GroupField="LOAN_STATUS_TYPE">
<Reader>
<ext:JsonReader IDProperty="RECORD_ID">
<Fields>
<ext:RecordField Name="RECORD_ID" />
<ext:RecordField Name="LOAN_STATUS" />
<ext:RecordField Name="LOAN_STATUS_TYPE" />
<ext:RecordField Name="LOAN_STATUS_COUNT" Type="Int"/>
</Fields>
</ext:JsonReader>
</Reader>
<SortInfo Field="RECORD_ID" Direction="ASC"/>
</ext:Store>
<ext:Viewport ID="Viewport1" runat="server" StyleSpec="bg" Layout="BorderLayout">
<Items>
<ext:Panel ID="pnlProfile" runat="server" Region="Center" Layout="BorderLayout" Border="false"
BodyStyle="background-color:#ffffff">
<Items>
<ext:GridPanel ID="grdLoansSummary" runat="server" StoreID="StoreLoans" StripeRows="true"
AutoExpandColumn="LOAN_STATUS" Height="280" Region="Center">
<ColumnModel ID="ColumnModel4" runat="server">
<Columns>
<ext:GroupingSummaryColumn ColumnID="LOAN_STATUS" Header="Loans" DataIndex="LOAN_STATUS"
Hideable="false" SummaryType="Count">
<SummaryRenderer Handler="return ((value === 0 || value > 1) ? 'Total' : 'Total');" />
</ext:GroupingSummaryColumn>
<ext:GroupingSummaryColumn ColumnID="LOAN_STATUS_COUNT" Header="Loan Count" DataIndex="LOAN_STATUS_COUNT"
Hideable="false" SummaryType="Sum">
<%--<SummaryRenderer Handler="return ((value === 0 || value > 1) ? value : '1');" />--%>
<SummaryRenderer Fn="linkSummaryRenderer" />
<Renderer Fn="linkRenderer" />
</ext:GroupingSummaryColumn>
<%--<ext:Column ColumnID="lnSCount" Header="Users" DataIndex="LOAN_STATUS_COUNT">
<Renderer Fn="linkRenderer" />
</ext:Column>--%>
<ext:Column ColumnID="LOAN_STATUS_TYPE" DataIndex="LOAN_STATUS_TYPE">
</ext:Column>
</Columns>
<Listeners>
<WidthChange Handler="updateTotal(#{grdLoansSummary});" />
</Listeners>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel4" runat="server" />
</SelectionModel>
<Listeners>
<ColumnResize Handler="updateTotal(#{grdLoansSummary});" />
<AfterRender Handler="updateTotal(#{grdLoansSummary});" Delay="100" />
</Listeners>
<LoadMask ShowMask="true" />
<View>
<ext:GroupingView ID="GroupingView2" runat="server" ForceFit="true" MarkDirty="false"
ShowGroupName="false" EnableNoGroups="true" HideGroupedColumn="true" />
</View>
<Plugins>
<ext:GroupingSummary ID="GroupingSummary2" runat="server">
</ext:GroupingSummary>
</Plugins>
<BottomBar>
<ext:Toolbar ID="Toolbar1" runat="server" Hidden="true">
<Items>
<ext:DisplayField ID="dfEvents" runat="server" DataIndex="LOAN_STATUS" Cls="total-field"
Text="-" />
</Items>
</ext:Toolbar>
</BottomBar>
</ext:GridPanel>
</Items>
</ext:Panel>
</Items>
</ext:Viewport>
</form>
</body>
</html>
The code behind
Partial Class Testing_ExtDataLinksTest
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Ext.Net.X.IsAjaxRequest Then
Call LoadLoanCounts()
End If
End Sub
Public Sub LoadLoanCounts()
StoreLoans.DataSource = GetAllLoansData()
StoreLoans.DataBind()
End Sub
Public Function GetAllLoansData() As DataTable
Dim dt As New DataTable
Dim dr As DataRow
Dim i As Integer
Dim j As Integer
dt.Columns.Add("RECORD_ID")
dt.Columns.Add("LOAN_STATUS")
dt.Columns.Add("LOAN_STATUS_TYPE")
dt.Columns.Add("LOAN_STATUS_COUNT")
' Add all loans in final statuses
For j = 0 To 3
dr = dt.NewRow()
dr(0) = i + 1
dr(1) = "Description " & i
dr(2) = "Loans In Final Statuses"
dr(3) = j + i
dt.Rows.Add(dr)
i = i + 1
Next
'Add all loans in Processing status
For j = 0 To 2
dr = dt.NewRow()
dr(0) = i + 1
dr(1) = "Description " & i
dr(2) = "Loans In Processing"
dr(3) = j + i
dt.Rows.Add(dr)
i = i + 1
Next
' Add all Registered loans
dr = dt.NewRow()
dr(0) = i + 1
dr(1) = "Registered"
dr(2) = "Registered Loans"
dr(3) = j + i
dt.Rows.Add(dr)
i = i + 1
'Add all 1003 status loans
dr = dt.NewRow()
dr(0) = i + 1
dr(1) = "1003"
dr(2) = "1003 Applications"
dr(3) = j + 1
dt.Rows.Add(dr)
Return dt
End Function
End Class
The main problem is, there is no specific record.id for total counts, so I didn't identify the total links while clicking, that is opening the same window for all total clicks. There is other problem also about sorting of grouping column. I don't need any sorting for that column "LOAN_STATUS_TYPE", I want to show the grid grouping columns as in this order...1. Loans In Final Statuses, 2. Loans In Processing, 3. Registered and 4. 1003 Applications. To make this I have given sortinfo field "RECORD_ID" in the store object, even though the order is as following ...1. 1003 Applications 2. Loans In Final Statuses, 3. Loans In Processing and 4. Registered.
Originally Posted by
Vladimir
Please post a sample demonstrates how do you render links