Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
136 views
Hi,
    I have created demo for radgrid filter. if I search in first textbox filter column and press enter then focus of control goes to second textbox filter column. I change the language English to Japanese and selecting input mode hiragana for typing text in filter it works in Firefox but not working in Internet Explorer. I have attached gif file for this problem.
    Please provide solution for it.

.aspx page code are as follows
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
</Scripts>
</telerik:RadScriptManager>
<telerik:RadCodeBlock runat="server">
<script type="text/javascript">
function attachFocusEvent() {
$telerik.$(".rgFilterRow").find("input").focus(function (e, f) {
var cellIndex = e.target.parentNode.cellIndex;

var columnsUniqueName = $find("<%= RadGrid1.ClientID %>").get_masterTableView().get_columns()[cellIndex]._data.UniqueName;
$get("<%= HiddenField1.ClientID %>").value = columnsUniqueName;

});
}
</script>
<script type="text/javascript">

var donePostback = false;
function Grid(sender, args) {
try {
var grd_view = document.getElementById('ctl00_MainContent_RadGrid1');
var grd_col = grd_view.children[0].children[0]; // grid colgroup
var grd_head = grd_view.children[0].children[1]; // grid header
var grd_rows = grd_view.children[0].children[2]; // grid body

// setting grouped column header names
if (grd_head.rows[0].cells[0].textContent == undefined) {
grd_head.rows[0].cells[3].innerText = "Group Building Name";
}
else {
grd_head.rows[0].cells[3].textContent = "Group Building Name";

}
grd_col.children[0].setAttribute("style", "width:0px ");
grd_col.children[1].setAttribute("style", "width:0px ");
grd_col.children[2].setAttribute("style", "width:0px ");

if (!donePostback) {

donePostback = true;
// setting width of grouped columns
grd_col.children[2].setAttribute("style", "width:0px ");
grd_col.children[3].setAttribute("style", "width:200px ");
grd_col.children[6].setAttribute("style", "width:100px ");
try {
var grid = $find("<%= RadGrid1.ClientID %>");
var columns = grid.get_masterTableView().get_columns();
for (var i = 0; i < columns.length; i++) {
columns[i].set_resizable(true);
}
} catch (e) {
}
}
grd_col.children[7].setAttribute("style", "width:0px !important;");

for (var r = 0; r < grd_head.rows.length; r++) {
var row = grd_head.rows[r];
if (row.className == "rgFilterRow") {

// Filter Change (Change)
row.cells[3].innerHTML = row.cells[7].innerHTML;
row.cells[7].innerHTML = "";
}
}
for (var r = 0; r < grd_rows.rows.length; r++) {

var row = grd_rows.rows[r];
if (row.className == "rgGroupHeader") {
row.setAttribute("class", "rgRow RowStyle");
row.setAttribute("style", "color: Black; background-color: White;");

var cells_count = row.cells.length - 1;

row.cells[cells_count].removeAttribute("colspan");

var cell_length = grd_head.rows[0].cells.length;

for (var col = cells_count + 1; col < cell_length; col++) {

row.insertCell(col);
}
if (row.cells[0].textContent == undefined) {
var group_name = row.cells[cells_count].children[0].innerText.split(',&*KeyToDivide,')[0];
var coloman_name = row.cells[cells_count].children[0].innerText.split(',&*KeyToDivide,')[1];
var case_count = row.cells[cells_count].children[0].innerText.split(',&*KeyToDivide,')[2];
row.cells[cells_count].innerText = "";
var span_grp_name = document.createElement("span");
span_grp_name.innerText = group_name;
row.cells[cells_count - 1].appendChild(span_grp_name);

try {
if (coloman_name == "SortOrder") {
grd_rows.rows[r].setAttribute("style", "display:none !important;");
}
} catch (e) {

}
}
else {
var group_name = row.cells[cells_count].children[0].textContent.split(',&*KeyToDivide,')[0];
var coloman_name = row.cells[cells_count].children[0].textContent.split(',&*KeyToDivide,')[1];
var case_count = row.cells[cells_count].children[0].textContent.split(',&*KeyToDivide,')[2];
row.cells[cells_count].textContent = "";
var span_grp_name = document.createElement("span");
span_grp_name.textContent = group_name;
row.cells[cells_count - 1].appendChild(span_grp_name);
try {
if (coloman_name == "SortOrder") {
grd_rows.rows[r].setAttribute("style", "display:none !important;");
}
} catch (e) {

}
}
}
var cell_noc = row.cells[2].cloneNode(true);
row.deleteCell(2);
row.insertCell(0);
row.replaceChild(cell_noc, row.cells[0]);

var cell_noc = row.cells[3].cloneNode(true);
row.deleteCell(3);
row.insertCell(1);
row.replaceChild(cell_noc, row.cells[1]);

for (var c = 0; c < row.cells.length - 1; c++) {
var col = row.cells[c];
col.removeAttribute("class");
}
}
}
catch (e) {
}
}

</script>
</telerik:RadCodeBlock>
<telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel1" LoadingPanelID="RadAjaxLoadingPanel1">
<asp:HiddenField runat="server" ID="HiddenField1" />
<telerik:RadGrid runat="server" ID="RadGrid1" AllowSorting="true" AllowPaging="true"
AutoGenerateColumns="false" AllowFilteringByColumn="true">
<GroupingSettings CaseSensitive="false" GroupContinuedFormatString="" GroupContinuesFormatString=""
GroupSplitDisplayFormat="" GroupSplitFormat="{0}" />
<ClientSettings AllowExpandCollapse="True" AllowDragToGroup="False" AllowColumnsReorder="False">
<Selecting AllowRowSelect="True" UseClientSelectColumnOnly="True" />
<Resizing AllowColumnResize="true" />
<ClientEvents OnGridCreated="Grid" OnCellSelected="attachFocusEvent" />
</ClientSettings>
<MasterTableView>
<GroupHeaderTemplate>
<asp:Label runat="server" ID="Label10" Text='<%# ""+ (((GridGroupHeaderItem)Container).AggregatesValues["BuildingSortOrderName"]) + ",&*KeyToDivide,SortOrder,&*KeyToDivide,"+ (((GridGroupHeaderItem)Container).AggregatesValues["BuildingSortOrderName"]) %>'
Visible='<%# ((((GridGroupHeaderItem)Container).AggregatesValues["BuildingSortOrderName"]) != null)%>'>
</asp:Label>
<asp:Label runat="server" ID="Label5" Text='<%#Server.HtmlEncode(""+ (((GridGroupHeaderItem)Container).AggregatesValues["BuildingName"]) +""+ ",&*KeyToDivide,Building,&*KeyToDivide,"+ (((GridGroupHeaderItem)Container).AggregatesValues["BuildingNameCount"])) %>'
Visible='<%# ((((GridGroupHeaderItem)Container).AggregatesValues["BuildingNameCount"]) != null)%>'>
</asp:Label>
<asp:Label ID="lblGroups" Visible="false" Text="" runat="server"></asp:Label>
</GroupHeaderTemplate>
<GroupByExpressions>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldName="BuildingSortOrder" FieldAlias="BuildingSortOrderName" />
<telerik:GridGroupByField FieldName="BuildingSortOrder" FieldAlias="BuildingNameCount" />
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldName="BuildingSortOrder" SortOrder="None" />
</GroupByFields>
</telerik:GridGroupByExpression>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldName="szBuildingName" FieldAlias="BuildingNameCount"
HeaderText="BuildingName" />
<telerik:GridGroupByField FieldName="szBuildingName" FieldAlias="BuildingName" HeaderText="BuildingName" />
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldName="szBuildingName" HeaderText="BuildingName" />
</GroupByFields>
</telerik:GridGroupByExpression>
</GroupByExpressions>
<Columns>
<telerik:GridTemplateColumn AllowFiltering="false" UniqueName="1">
<ItemTemplate>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn AllowFiltering="false" UniqueName="2">
<ItemTemplate>
</ItemTemplate>
<HeaderStyle Width="200px" />
</telerik:GridTemplateColumn>
<telerik:GridClientSelectColumn UniqueName="d" Groupable="false">
</telerik:GridClientSelectColumn>
<telerik:GridBoundColumn DataField="Id" FilterControlAltText="Filter column column"
HeaderText="Id" UniqueName="Id" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Building Name" FilterControlWidth="200px"
AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"
DataField="szBuildingName" UniqueName="szBuildingName" FilterControlAltText="Filter column1 column">
<ItemTemplate>
<asp:Label ID="lbl_Id" Visible="false" runat="server" Text='<%#Eval("Id") %>'></asp:Label>
<asp:LinkButton ID="LinkButton2" CommandName="EditBuilding" runat="server" Text='<%# HttpUtility.HtmlEncode(Eval("szBuildingName")) %>'></asp:LinkButton>
<asp:Button ID="DownloadPDF" Style="display: none;" runat="server" Width="0px" CommandName="ExportToPdf" />
</ItemTemplate>
<HeaderStyle Width="250px" />
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn HeaderText="Sort Order" FilterControlAltText="Filter column1 column"
HtmlEncode="true" DataField="szSortOrder" UniqueName="szSortOrder" FilterControlWidth="200px"
AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"
SortExpression="nSortOrder">
<HeaderStyle Width="100px" />
</telerik:GridBoundColumn>
<telerik:GridBoundColumn HeaderText="Building Name" FilterControlAltText="Filter column1 column"
HtmlEncode="true" DataField="szBuildingName" UniqueName="szBuildingName1" FilterControlWidth="200px"
AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false"
SortExpression="nSortOrder">
<HeaderStyle Width="100px" />
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings Selecting-AllowRowSelect="true">
</ClientSettings>
</telerik:RadGrid>
</telerik:RadAjaxPanel>
<telerik:RadAjaxLoadingPanel runat="server" Skin="Default" ID="RadAjaxLoadingPanel1">
</telerik:RadAjaxLoadingPanel>
</asp:Content>


and CS file code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Telerik.Web.UI;

public partial class _Default : System.Web.UI.Page
{
bool shouldFocusInput = false;
bool shouldFocusInputBuildingGroup = false;
bool shouldFocusInputSortOrder = false;
bool shouldFocusInputBuilding = false;

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

RadGrid1.NeedDataSource += new Telerik.Web.UI.GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource);
RadGrid1.ItemCommand += RadGrid1_ItemCommand;
RadGrid1.PreRender += RadGrid1_PreRender;
}

void RadGrid1_PreRender(object sender, EventArgs e)
{
if (shouldFocusInput)
{
string columnUniqeuName = HiddenField1.Value;

var col = (RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem)[columnUniqeuName];
TextBox tb = (col.Controls[0] as TextBox);
tb.Focus();
}

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "attachFocusEvent", "attachFocusEvent();", true);
if (shouldFocusInputBuildingGroup)
{
var col = (RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem)["szBuildingName1"];
TextBox tb = (col.Controls[0] as TextBox);
tb.Focus();
}
else if (shouldFocusInputSortOrder)
{
var col = (RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem)["szSortOrder"];
TextBox tb = (col.Controls[0] as TextBox);
tb.Focus();
}
else if (shouldFocusInputBuilding && RadGrid1.MasterTableView.AllowFilteringByColumn)
{
var col = (RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem)["szBuildingName"];
TextBox tb = (col.Controls[0] as TextBox);
tb.Focus();
}
}

void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.FilterCommandName)
{
if ((e.CommandArgument as Pair).Second.ToString() == "szBuildingName1")
{
shouldFocusInputBuilding = true;
}
else if ((e.CommandArgument as Pair).Second.ToString() == "szBuildingName")
{
shouldFocusInputSortOrder = true;
}
else if ((e.CommandArgument as Pair).Second.ToString() == "szSortOrder")
{
shouldFocusInputBuildingGroup = true;
}
}
}

void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("Id");
table.Columns.Add("szSortOrder");
table.Columns.Add("szBuildingName");
table.Columns.Add("BuildingSortOrder");
for (int i = 1; i < 8; i++)
{
table.Rows.Add(i, "szSortOrder" + i.ToString(), "szBuildingName" + i.ToString(),i);
}
RadGrid1.DataSource = table;
}

}


    
Angel Petrov
Telerik team
 answered on 28 Aug 2014
1 answer
206 views
Greetings,

I have a user control with a RadGrid that I am using for data entry.  I used the examples in the following older posts, and it works, but I am experiencing severe performance issues when the grid grows to about 40 lines

http://www.telerik.com/forums/how-to-add-amp-delete-dynamic-rows-in-radgrid
http://www.telerik.com/forums/dynamically-add-new-rows-to-radgrid

Is there a better way to accomplish multi-line data entry?  I am willing to go a different direction or use a different control if necessary.  Here is my current code...

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="InputFormFundsBreakdown.ascx.cs"
Inherits="Controls_InputFormFundsBreakdown" %>
<table align="left" cellpadding="5" width="100%">
  <tr>
    <td align="center" colspan="2">
      <h3>
        Funds Breakdown
        <asp:Image ID="imgFundsHelp" runat="server" ImageUrl="~/Images/help.png" />
        <telerik:RadToolTip ID="tipFundsHelp" runat="server" HideEvent="LeaveTargetAndToolTip"
                            Position="TopRight" TargetControlID="imgFundsHelp">
          Help goes here
        </telerik:RadToolTip>
      </h3>
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <asp:Label ID="errFundsMessage" runat="server" ForeColor="Red"></asp:Label>
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <telerik:RadGrid ID="grdFunds" runat="server" AutoGenerateColumns="False" OnDataBound="grdFunds_DataBound"
                       OnNeedDataSource="grdFunds_NeedDataSource">
        <MasterTableView DataKeyNames="RowNumber" AlternatingItemStyle-BackColor="#DAE2E8">
          <ItemStyle VerticalAlign="Top" />
          <Columns>
            <telerik:GridTemplateColumn HeaderText="Fund Name">
              <ItemTemplate>
                <telerik:RadTextBox ID="txtFundName" runat="server" MaxLength="100" Width="85px"
                                    Text='<%# Eval("FundName")%>'>
                </telerik:RadTextBox>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="* Fund Number">
              <ItemTemplate>
                <telerik:RadTextBox ID="txtFundNumber" runat="server" Width="85px" MaxLength="100"
                                    Text='<%# Eval("FundNumber")%>'>
                  <ClientEvents OnKeyPress="NumericOnly" />
                </telerik:RadTextBox>
                <br />
                <asp:Label ID="errFundNumber" runat="server" ForeColor="Red"></asp:Label>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="* Account">
              <ItemTemplate>
                <telerik:RadTextBox ID="txtAccount" runat="server" Width="85px" MaxLength="100" Text='<%# Eval("Account")%>'>
                </telerik:RadTextBox>
                <br />
                <asp:Label ID="errAccount" runat="server" ForeColor="Red"></asp:Label>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="Subledger">
              <ItemTemplate>
                <telerik:RadTextBox ID="txtSubledger" runat="server" Width="85px" MaxLength="100"
                                    Text='<%# Eval("Subledger")%>'>
                  <ClientEvents OnKeyPress="NumericOnly" />
                </telerik:RadTextBox>
                <br />
                <asp:Label ID="errSubledger" runat="server" ForeColor="Red"></asp:Label>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="T Code">
              <ItemTemplate>
                <asp:HiddenField ID="hdnTCode" runat="server" Value='<%# Eval("TCode")%>' />
                <telerik:RadDropDownList ID="ddlTCode" runat="server" Width="40px">
                  <Items>
                    <telerik:DropDownListItem Value="" Text=" " />
                    <telerik:DropDownListItem Value="W" Text="W" />
                    <telerik:DropDownListItem Value="A" Text="A" />
                  </Items>
                </telerik:RadDropDownList>
                <br />
                <asp:Label ID="errTCode" runat="server" ForeColor="Red"></asp:Label>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="* Amount">
              <ItemTemplate>
                <telerik:RadNumericTextBox ID="txtFundAmount" runat="server" DataType="System.Decimal"
                                           Width="85px" MaxLength="100" NumberFormat-DecimalDigits="2" Type="Currency" DbValue='<%# Eval("Amount")%>'
                                           IncrementSettings-InterceptMouseWheel="False">
                </telerik:RadNumericTextBox><br />
                <asp:Label ID="errFundAmount" runat="server" ForeColor="Red"></asp:Label>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn HeaderText="Memo">
              <ItemTemplate>
                <telerik:RadTextBox ID="txtFundMemo" runat="server" Width="145px" Text='<%# Eval("Memo")%>'>
                </telerik:RadTextBox>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn>
              <ItemTemplate>
                <telerik:RadButton ID="btnDeleteFundLine" runat="server" Text="Delete" CssClass="classDeleteImage"
                                   HoveredCssClass="classDeleteHoveredImage" PressedCssClass="classDeletePressedImage"
                                   OnCommand="btnDeleteFundLine_Command" CommandArgument='<%# Eval("RowNumber")%>'>
                  <Image EnableImageButton="true" />
                </telerik:RadButton>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
          </Columns>
        </MasterTableView>
      </telerik:RadGrid>
    </td>
  </tr>
  <tr>
    <td colspan="2">
        
    </td>
  </tr>
  <tr>
    <td>
      <telerik:RadNumericTextBox ID="txtNumberOfRows" runat="server" Width="50px" MinValue="1"
                                 ShowSpinButtons="true" DataType="System.Int32" NumberFormat-DecimalDigits="0" Value="1">
      </telerik:RadNumericTextBox>
      <telerik:RadButton ID="btnAddFundRow" runat="server" Font-Bold="True" Icon-PrimaryIconCssClass="rbAdd"
                         Text="Add Rows" OnClick="btnAddFundRow_Click">
      </telerik:RadButton>
    </td>
    <td align="right">
      <asp:Label ID="lblFundsTotal" runat="server" Font-Bold="true"></asp:Label>  
      <telerik:RadButton ID="btnCalculateFunds" runat="server" Font-Bold="True" Text="Calculate"
                         Icon-PrimaryIconUrl="~/Images/calc.jpg" OnClick="btnCalculateFunds_Click">
      </telerik:RadButton>
    </td>
  </tr>
</table>

using System;
using System.Data;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using dsCashTransmittalTableAdapters;
public partial class Controls_InputFormFundsBreakdown : System.Web.UI.UserControl
{
  public DataTable FundsTable
  {
    get;
    private set;
  }
  protected void Page_Load(object sender, EventArgs e)
  {
    if (ViewState["FundsTable"] == null)
    {
      FundsTable = DefineFundsDataTable();
      AddFiveRows();
    }
    else
    {
      FundsTable = (DataTable)ViewState["FundsTable"];
    }
  }
 
  public decimal CalculateTotal()
  {
    decimal totalAmount = 0;
    try
    {
      foreach (GridDataItem item in grdFunds.Items)
      {
        RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
        totalAmount += Convert.ToDecimal(txtFundAmount.Value);
      }
    }
    catch (Exception)
    {
      totalAmount = 0;
    }
    return totalAmount;
  }
 
  public int CountEntries()
  {
    int cnt = 0;
    try
    {
      foreach (GridDataItem item in grdFunds.Items)
      {
        RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
        if (txtFundAmount.Value != 0)
        {
          cnt++;
        }
      }
    }
    catch (Exception)
    {
      cnt = 0;
    }
    return cnt;
  }
 
  public void ResetValidation()
  {
    errFundsMessage.Text = "";
    foreach (GridDataItem item in grdFunds.Items)
    {
      Label errFundNumber = (Label)item.FindControl("errFundNumber");
      errFundNumber.Text = "";
      Label errAccount = (Label)item.FindControl("errAccount");
      errAccount.Text = "";
      Label errSubledger = (Label)item.FindControl("errSubledger");
      errSubledger.Text = "";
      Label errTCode = (Label)item.FindControl("errTCode");
      errTCode.Text = "";
      Label errFundAmount = (Label)item.FindControl("errFundAmount");
      errFundAmount.Text = "";
    }
    ShowCalculatedTotals();
  }
 
  public void ShowCalculatedTotals()
  {
    lblFundsTotal.Text = "Total: " + CalculateTotal().ToString("C");
  }
 
  public bool ValidateForm(bool valid, ref string logMsg, bool twoFundsRequired, bool oneFundRequired)
  {
    bool hasFund = false;
    bool num = false;
    bool acct = false;
    bool tcode = false;
    bool sub = false;
    //bool amt = false;
    foreach (GridDataItem item in grdFunds.Items)
    {
      RadTextBox txtFundName = (RadTextBox)item.FindControl("txtFundName");
      RadTextBox txtFundNumber = (RadTextBox)item.FindControl("txtFundNumber");
      Label errFundNumber = (Label)item.FindControl("errFundNumber");
      RadTextBox txtAccount = (RadTextBox)item.FindControl("txtAccount");
      Label errAccount = (Label)item.FindControl("errAccount");
      RadTextBox txtSubledger = (RadTextBox)item.FindControl("txtSubledger");
      Label errSubledger = (Label)item.FindControl("errSubledger");
      RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
      Label errTCode = (Label)item.FindControl("errTCode");
      RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
      //Label errFundAmount = (Label)item.FindControl("errFundAmount");
      RadTextBox txtFundMemo = (RadTextBox)item.FindControl("txtFundMemo");
      if (txtFundAmount.Text == string.Empty)
      {
        txtFundAmount.Value = 0;
      }
      if (txtFundName.Text != string.Empty ||
          txtFundNumber.Text != string.Empty ||
          txtAccount.Text != string.Empty ||
          txtSubledger.Text != string.Empty ||
          ddlTCode.SelectedValue != string.Empty ||
          txtFundAmount.Value != 0 ||
          txtFundMemo.Text != string.Empty)
      {
        if (txtFundAmount.Value == 0)
        {
          //errFundAmount.Text = "Required";
          //amt = true;
          //txtFundAmount.Focus();
          //valid = false;
        }
        else
        {
          hasFund = true;       
          if (txtSubledger.Text != string.Empty && ddlTCode.SelectedValue == string.Empty)
          {
            errTCode.Text = "Required";
            tcode = true;
            ddlTCode.Focus();
            valid = false;
          }
          else if (ddlTCode.SelectedValue != string.Empty && txtSubledger.Text == string.Empty)
          {
            errSubledger.Text = "Required";
            sub = true;
            txtSubledger.Focus();
            valid = false;
          }
          if (txtAccount.Text == string.Empty)
          {
            errAccount.Text = "Required";
            acct = true;
            txtAccount.Focus();
            valid = false;
          }
          if (txtFundNumber.Text == string.Empty)
          {
            errFundNumber.Text = "Required";
            num = true;
            txtFundNumber.Focus();
            valid = false;
          }
        }
      }
    }
    if (!hasFund && oneFundRequired)
    {
      if (twoFundsRequired)
      {
        errFundsMessage.Text = "Enter at least two funds";
        logMsg = "<li><b>At least two Funds</b> is Required</li>" + logMsg;
      }
      else
      {
        errFundsMessage.Text = "Enter at least one fund";
        logMsg = "<li><b>At least one Fund</b> is Required</li>" + logMsg;
      }
 
      grdFunds.Focus();
      valid = false;
    }
    else
    {
      //if (amt)
      //{
      //  logMsg = "<li><b>Fund Amount</b> is Required</li>" + logMsg;
      //}
      if (tcode)
      {
        logMsg = "<li><b>Fund T Code</b> is Required</li>" + logMsg;
      }
      if (sub)
      {
        logMsg = "<li><b>Fund Subledger</b> is Required</li>" + logMsg;
      }
      if (acct)
      {
        logMsg = "<li><b>Fund Account</b> is Required</li>" + logMsg;
      }
      if (num)
      {
        logMsg = "<li><b>Fund Number</b> is Required</li>" + logMsg;
      }
      UpdateFundTableFromGrid();
    }
    return valid;
  }
 
  public void AddGridErrorMessage(string msg)
  {
    errFundsMessage.Text = msg;
  }
 
  public void ResetForm()
  {
    //FundsTable = DefineFundsDataTable();
    //BindFundGrid();
    ShowCalculatedTotals();
  }
 
  public void LoadForm(CTCommonRequests req)
  {
    FundsTable = LoadFundsDataSource(req.GetCTFundsBreakdown());
    AddFiveRows();
    FillFundFields();
    ShowCalculatedTotals();
  }
 
  public void LoadTemplate(int templateID)
  {
    TemplateFunds_vTableAdapter taFund = new TemplateFunds_vTableAdapter();
    FundsTable = LoadFundsTemplateDataSource(taFund.GetDataByTemplateID(templateID));
    AddFiveRows();
    FillFundFields();
    ShowCalculatedTotals();
  }
 
  public void UpdateFundTableFromGrid()
  {
    FundsTable = DefineFundsDataTable();
    foreach (GridDataItem item in grdFunds.Items)
    {
      RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
      if (Convert.ToDecimal(txtFundAmount.Value) != 0)
      {
        DataRow row = FundsTable.NewRow();
        row["RowNumber"] = item.GetDataKeyValue("RowNumber").ToString();
        RadTextBox txtFundName = (RadTextBox)item.FindControl("txtFundName");
        row["FundName"] = txtFundName.Text;
        RadTextBox txtFundNumber = (RadTextBox)item.FindControl("txtFundNumber");
        row["FundNumber"] = txtFundNumber.Text;
        RadTextBox txtAccount = (RadTextBox)item.FindControl("txtAccount");
        row["Account"] = txtAccount.Text;
        RadTextBox txtSubledger = (RadTextBox)item.FindControl("txtSubledger");
        row["Subledger"] = txtSubledger.Text;
        RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
        row["TCode"] = ddlTCode.SelectedValue;
        row["Amount"] = Convert.ToDecimal(txtFundAmount.Value);
        RadTextBox txtFundMemo = (RadTextBox)item.FindControl("txtFundMemo");
        row["Memo"] = txtFundMemo.Text;
        FundsTable.Rows.Add(row);
      }
    }
  }
 
  public void UpdateTemplateFundTableFromGrid()
  {
    FundsTable = DefineFundsDataTable();
    foreach (GridDataItem item in grdFunds.Items)
    {
      RadTextBox txtFundName = (RadTextBox)item.FindControl("txtFundName");
      RadTextBox txtFundNumber = (RadTextBox)item.FindControl("txtFundNumber");
      RadTextBox txtAccount = (RadTextBox)item.FindControl("txtAccount");
      RadTextBox txtSubledger = (RadTextBox)item.FindControl("txtSubledger");
      RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
      RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
      RadTextBox txtFundMemo = (RadTextBox)item.FindControl("txtFundMemo");
      if (txtFundName.Text.Trim() != string.Empty ||
          txtFundNumber.Text.Trim() != string.Empty ||
          txtAccount.Text.Trim() != string.Empty ||
          txtSubledger.Text.Trim() != string.Empty ||
          (ddlTCode.SelectedIndex > -1 && ddlTCode.SelectedValue != "") ||
          txtFundMemo.Text.Trim() != string.Empty)
      {
        DataRow row = FundsTable.NewRow();
        row["RowNumber"] = item.GetDataKeyValue("RowNumber").ToString();
        row["FundName"] = txtFundName.Text;
        row["FundNumber"] = txtFundNumber.Text;
        row["Account"] = txtAccount.Text;
        row["Subledger"] = txtSubledger.Text;
        row["TCode"] = ddlTCode.SelectedValue;
        row["Amount"] = Convert.ToDecimal(txtFundAmount.Value);
        row["Memo"] = txtFundMemo.Text;
        FundsTable.Rows.Add(row);
      }
    }
  }
 
  protected void grdFunds_DataBound(object sender, EventArgs e)
  {
    ShowCalculatedTotals();
  }
 
  protected void btnAddFundRow_Click(object sender, EventArgs e)
  {
    ResetValidation();
    FundsTable = DefineFundsDataTable();
    foreach (GridDataItem item in grdFunds.Items)
    {
      DataRow row = FundsTable.NewRow();
      row["RowNumber"] = item.GetDataKeyValue("RowNumber").ToString();
      RadTextBox txtFundName = (RadTextBox)item.FindControl("txtFundName");
      row["FundName"] = txtFundName.Text;
      RadTextBox txtFundNumber = (RadTextBox)item.FindControl("txtFundNumber");
      row["FundNumber"] = txtFundNumber.Text;
      RadTextBox txtAccount = (RadTextBox)item.FindControl("txtAccount");
      row["Account"] = txtAccount.Text;
      RadTextBox txtSubledger = (RadTextBox)item.FindControl("txtSubledger");
      row["Subledger"] = txtSubledger.Text;
      RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
      row["TCode"] = ddlTCode.SelectedValue;
      RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
      row["Amount"] = Convert.ToDecimal(txtFundAmount.Value);
      RadTextBox txtFundMemo = (RadTextBox)item.FindControl("txtFundMemo");
      row["Memo"] = txtFundMemo.Text;
 
      FundsTable.Rows.Add(row);
    }
    for (int x = 0; x < txtNumberOfRows.Value; x++)
    {
      FundsTable = AddFundsRow(FundsTable);
    }
    grdFunds.Rebind();
    FillFundFields();
  }
 
  protected void btnDeleteFundLine_Command(object sender, CommandEventArgs e)
  {
    int rowNumber = Convert.ToInt32(e.CommandArgument);
    ResetValidation();
    FundsTable = DefineFundsDataTable();
    foreach (GridDataItem item in grdFunds.Items)
    {
      DataRow row = FundsTable.NewRow();
      row["RowNumber"] = item.GetDataKeyValue("RowNumber").ToString();
      RadTextBox txtFundName = (RadTextBox)item.FindControl("txtFundName");
      row["FundName"] = txtFundName.Text;
      RadTextBox txtFundNumber = (RadTextBox)item.FindControl("txtFundNumber");
      row["FundNumber"] = txtFundNumber.Text;
      RadTextBox txtAccount = (RadTextBox)item.FindControl("txtAccount");
      row["Account"] = txtAccount.Text;
      RadTextBox txtSubledger = (RadTextBox)item.FindControl("txtSubledger");
      row["Subledger"] = txtSubledger.Text;
      RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
      row["TCode"] = ddlTCode.SelectedValue;
      RadNumericTextBox txtFundAmount = (RadNumericTextBox)item.FindControl("txtFundAmount");
      row["Amount"] = Convert.ToDecimal(txtFundAmount.Value);
      RadTextBox txtFundMemo = (RadTextBox)item.FindControl("txtFundMemo");
      row["Memo"] = txtFundMemo.Text;
 
      FundsTable.Rows.Add(row);
    }
    FundsTable = DeleteFundsRow(FundsTable, rowNumber);
    //grdFunds.DataSource = FundsTable;
    grdFunds.Rebind();
    //foreach (GridDataItem item in grdFunds.Items)
    //{
    //  HiddenField hdnTCode = (HiddenField)item.FindControl("hdnTCode");
    //  RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
    //  ddlTCode.SelectedValue = hdnTCode.Value;
    //}
    FillFundFields();
  }
 
  protected void btnCalculateFunds_Click(object sender, EventArgs e)
  {
    lblFundsTotal.Text = "Total: " + CalculateTotal().ToString("C");
  }
 
  private void AddFiveRows()
  {
    for (int x = 1; x < 6; x++)
    {
      FundsTable = AddFundsRow(FundsTable);
    }
    //grdFunds.DataSource = FundsTable;
    grdFunds.Rebind();
  }
 
  private DataTable DefineFundsDataTable()
  {
    DataTable dt = new DataTable("FundsBreakdown");
    DataColumn dc = new DataColumn("RowNumber");
    dc.DataType = Type.GetType("System.Int32");
    dt.Columns.Add(dc);
    dc = new DataColumn("FundName");
    dc.DataType = Type.GetType("System.String");
    dt.Columns.Add(dc);
    dc = new DataColumn("FundNumber");
    dc.DataType = Type.GetType("System.String");
    dt.Columns.Add(dc);
    dc = new DataColumn("Account");
    dc.DataType = Type.GetType("System.String");
    dt.Columns.Add(dc);
    dc = new DataColumn("Subledger");
    dc.DataType = Type.GetType("System.String");
    dt.Columns.Add(dc);
    dc = new DataColumn("TCode");
    dc.DataType = Type.GetType("System.String");
    dt.Columns.Add(dc);
    dc = new DataColumn("Amount");
    dc.DataType = Type.GetType("System.Decimal");
    dt.Columns.Add(dc);
    dc = new DataColumn("Memo");
    dc.DataType = Type.GetType("System.String");
    dt.Columns.Add(dc);
    return dt;
  }
 
  private DataTable AddFundsRow(DataTable dt)
  {
    DataRow row = dt.NewRow();
    row["RowNumber"] = dt.Rows.Count + 1;
    row["FundName"] = "";
    row["FundNumber"] = "";
    row["Account"] = "";
    row["Subledger"] = "";
    row["TCode"] = "";
    row["Amount"] = 0;
    row["Memo"] = "";
    dt.Rows.Add(row);
    return dt;
  }
 
  private DataTable DeleteFundsRow(DataTable dt, int deleteRow)
  {
    DataTable deletedRowTable = DefineFundsDataTable();
    foreach (DataRow sourceRow in dt.Rows)
    {
      if (Convert.ToInt32(sourceRow["RowNumber"]) != deleteRow)
      {
        DataRow row = deletedRowTable.NewRow();
        row["RowNumber"] = deletedRowTable.Rows.Count + 1;
        row["FundName"] = sourceRow["FundName"];
        row["FundNumber"] = sourceRow["FundNumber"];
        row["Account"] = sourceRow["Account"];
        row["Subledger"] = sourceRow["Subledger"];
        row["TCode"] = sourceRow["TCode"];
        row["Amount"] = sourceRow["Amount"];
        row["Memo"] = sourceRow["Memo"];
        deletedRowTable.Rows.Add(row);
      }
    }
    return deletedRowTable;
  }
 
  private DataTable LoadFundsDataSource(DataTable sourceDT)
  {
    DataTable filledDataTable = DefineFundsDataTable();
    foreach (DataRow sourceRow in sourceDT.Rows)
    {
      DataRow row = filledDataTable.NewRow();
      row["RowNumber"] = filledDataTable.Rows.Count + 1;
      row["FundName"] = sourceRow["FundName"];
      row["FundNumber"] = sourceRow["FundNumber"];
      row["Account"] = sourceRow["AccountNumber"];
      row["Subledger"] = sourceRow["Subledger"];
      row["TCode"] = sourceRow["TCode"];
      row["Amount"] = sourceRow["FundAmount"];
      row["Memo"] = sourceRow["FundMemo"];
      filledDataTable.Rows.Add(row);
    }
    return filledDataTable;
  }
 
  private DataTable LoadFundsTemplateDataSource(DataTable sourceDT)
  {
    DataTable filledDataTable = DefineFundsDataTable();
    foreach (DataRow sourceRow in sourceDT.Rows)
    {
      DataRow row = filledDataTable.NewRow();
      row["RowNumber"] = filledDataTable.Rows.Count + 1;
      row["FundName"] = sourceRow["TemplateFundName"];
      row["FundNumber"] = sourceRow["TemplateFundNumber"];
      row["Account"] = sourceRow["TemplateAccountNumber"];
      row["Subledger"] = sourceRow["TemplateSubledger"];
      row["TCode"] = sourceRow["TemplateTCode"];
      row["Amount"] = 0;
      row["Memo"] = sourceRow["TemplateFundMemo"];
      filledDataTable.Rows.Add(row);
    }
    return filledDataTable;
  }
 
  private void FillFundFields()
  {
    foreach (GridDataItem item in grdFunds.Items)
    {
      HiddenField hdnTCode = (HiddenField)item.FindControl("hdnTCode");
      RadDropDownList ddlTCode = (RadDropDownList)item.FindControl("ddlTCode");
      if (hdnTCode.Value == "")
      {
        ddlTCode.SelectedIndex = -1;
      }
      else
      {
        ddlTCode.SelectedValue = hdnTCode.Value;
      }
    }
  }
 
  protected void grdFunds_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
  {
    ViewState["FundsTable"] = FundsTable;
    grdFunds.DataSource = FundsTable;
  }
}

Any suggestions for improvement would be greatly appreciated!

Matt
Princy
Top achievements
Rank 2
 answered on 28 Aug 2014
1 answer
203 views
Hello,

I have a grid and I can click on the left arrow to expand the nested grid within. If I have a nested grid expanded then I click on a column header to sort the grid then every row will become collapsed. If I set HierarchyDefaultExpanded to true then if I collapse a nested grid then try to sort, then all of my nested grids will go back to expanded. I tried setting RetainExpandStateOnRebind to true but that doesn't help in this scenario.

How would I be able to retain expanded state when I click on a column header to sort items?


Thank you,

Brett
Princy
Top achievements
Rank 2
 answered on 28 Aug 2014
1 answer
283 views
I have a boundcolumn with a column validator that looks like this:

<telerik:GridBoundColumn DataField="January" HeaderText="Jan" Aggregate="Sum" FooterAggregateFormatString="{0:n0}">
                            <ColumnValidationSettings EnableRequiredFieldValidation="true">
                                <RequiredFieldValidator ForeColor="Red" ErrorMessage="January required" Text="*" Display="Dynamic"></RequiredFieldValidator>
                            </ColumnValidationSettings>
                        </telerik:GridBoundColumn>


The field January is an integer. How would I be able to make it allow ONLY integers. Currently I can enter "hello world" and save it.
Alexander
Top achievements
Rank 1
 answered on 27 Aug 2014
7 answers
623 views

I'm getting the following exception on a random basis.

My grid is bound to a datatable stored in the session.
I don't think it's related to session timeout...but I might be wrong...
How can I resolve the issue?

ID is neither a DataColumn nor a DataRelation for table .

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: ID is neither a DataColumn nor a DataRelation for table .

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[ArgumentException: ID is neither a DataColumn nor a DataRelation for table .]
   System.Data.DataRowView.get_Item(String property) +1741034
   Telerik.Web.UI.GridTableView.PopulateDataKeys(Object dataItem) +313

[GridException: There was a problem extracting DataKeyValues from the DataSource. Please ensure that DataKeyNames are specified correctly and all fields specified exist in the DataSource.]
   Telerik.Web.UI.GridTableView.PopulateDataKeys(Object dataItem) +1188
   Telerik.Web.UI.GridItemBuilder.CreateItems(GridGroupingContext group) +524
   Telerik.Web.UI.GridTableView.CreateItems(IEnumerator enumerator, GridColumn[] columns, ControlCollection controls) +187
   Telerik.Web.UI.GridTableView.CreateControlHierarchy(Boolean useDataSource) +1573
   Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +768
   System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57
   System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142
   Telerik.Web.UI.GridTableView.PerformSelect() +38
   System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73
   Telerik.Web.UI.GridTableView.DataBind() +354
   Telerik.Web.UI.RadGrid.DataBind() +165
   Telerik.Web.UI.RadGrid.AutoDataBind(GridRebindReason rebindReason) +3869
   Telerik.Web.UI.RadGrid.OnLoad(EventArgs e) +177
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
Jose
Top achievements
Rank 2
 answered on 27 Aug 2014
2 answers
78 views
Hi Everyone,

I was wondering if someone can provide me with some help or guidance.  I have a RadGrid that is being fill manually(code behind) using entity framework. One of the column contain a foreign key ID(DataField="CostCenterType_ID") which will make no sense to a user.  How can I get it to display primary table description column?  Below is the columns for my grid and code behind to fill it. Thank you in advance....

01.<Columns>
02.        <telerik:GridEditCommandColumn ButtonType="ImageButton" />
03.        <telerik:GridBoundColumn DataField="ID" HeaderText="ID" ReadOnly="true"
04.                    ForceExtractValue="Always" ConvertEmptyStringToNull="true" DataType="System.Int32" />
05.                <telerik:GridBoundColumn DataField="CostCenterNumber" HeaderText="Cost Center No" Visible="true" DataType="System.Int32" />
06.                <telerik:GridBoundColumn DataField="CostCenterName" HeaderText="Cost Center Name" />
07.                <telerik:GridBoundColumn DataField="CostCenterType_ID" HeaderText="Cost Type"/>
08.                <telerik:GridBoundColumn DataField="UpdateBy" HeaderText="Last Update by" ReadOnly="True" Visible="True" AllowFiltering="False" />
09.                <telerik:GridBoundColumn DataField="UpdateDateTime" HeaderText="UpdateDateTime" Visible="true" DataType="System.DateTime" ReadOnly="True" AllowFiltering="False" />
10.                 <telerik:GridBoundColumn DataField="RowVersion" HeaderText="Row Version" DataType="System.Byte" Visible="false" ReadOnly="true"></telerik:GridBoundColumn>
11.                <telerik:GridButtonColumn ConfirmText="Delete this product?" ConfirmDialogType="RadWindow"
12.                    ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" />
13.         </Columns>

1.//Supply RadGrid with data from Entity Framework
2.       protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
3.       {
4.           RadGrid1.DataSource = DbContext.CostCenters;
5.       }
Anthony
Top achievements
Rank 1
 answered on 27 Aug 2014
2 answers
294 views
Hi,

I have RadHtmlChart inside a RadDock. I've got a refresh button on the RadDock command that refreshes the grid. When you click on the chart series it toggles the bars visibility.

If the user hide a series then clicks the refresh button on the dock, the hidden series is shown again.

Is it possible to maintain the visibilty toggle state after a postback? Using the RadPersistenceFramework perhaps?

Thanks in advance,

Matt
Matt
Top achievements
Rank 1
 answered on 27 Aug 2014
2 answers
64 views
Starting with the grid grouping demos using summed numeric data, I also turned on column reordering. When I reorder a column, the group footer cells don't move with the rest of the columns - the normal data cells moves, and the grid "total" footer" cells move, but each group footer cell stays in the old location.

Am I doing something wrong? Anything I should try?


I see someone had a similar problem a year ago, but had to write his own javascript solution. I'd prefer to avoid that if possible. :)
http://www.telerik.com/forums/radgrid-question-about-grouping-aggregate-functions-and-column-reorder

Using asp.net ajax 2014 Q1 release
Joel
Top achievements
Rank 1
 answered on 27 Aug 2014
1 answer
108 views
I don't know why but I am encountering problems with the Telerik ASP.net Ajax platform.  I am attempting to replicate a demonstration located at the following link: http://demos.telerik.com/aspnet-ajax/imageeditor/examples/imageupload/defaultcs.aspx

Now I copied everything, the same controls, the same markup for the front end code and still, it doesn't work.  What gives?  I'm confused, why the inconsistency?

Vessy
Telerik team
 answered on 27 Aug 2014
3 answers
70 views
It is very easy to right click a folder in visual studio and add a grid to a new page.

What I cannot find out is how to easily add a grid to an EXISTING page.  I've already successfully generated the grids I needed on their separate pages.

I did get it to work once by carefully by looking at the aspx code (and this was only one grid, not two), but I would prefer to use GUI interface if possible to drag and drop or use a menu to add the grid to an existing page.  I haven't had two grids working on the same page yet, GUI or no GUI!

The page is very simple - it's just a master page and not much else.
Viktor Tachev
Telerik team
 answered on 27 Aug 2014
Narrow your results
Selected tags
Tags
+? more
Top users last month
Tien
Top achievements
Rank 1
Iron
Krasimir
Top achievements
Rank 3
Bronze
Iron
Iron
Cedar
Top achievements
Rank 1
Iron
Emil
Top achievements
Rank 1
Iron
Kyle Watson
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Tien
Top achievements
Rank 1
Iron
Krasimir
Top achievements
Rank 3
Bronze
Iron
Iron
Cedar
Top achievements
Rank 1
Iron
Emil
Top achievements
Rank 1
Iron
Kyle Watson
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?