Quantcast
Channel: Telerik Forums RSS
Viewing all articles
Browse latest Browse all 84751

Timing issue with grid: Creating new row when click on bottom row

$
0
0

 

That's definitely cleaner than my code! Thanks for the example. I modified it a bit to mimic mine (and copy-pasted below since I can't attach a zip file) to show 3 problems...

1) If you click on the bottom row it works, but if you click on the new bottom row, it doesn't create another row, but it should.

2) The checkbox shows "true" rather than a checkbox. (That's part of why I used innerHMTL in my earlier post, but there must be a better solution.)

3) We also need it to populate with 2 blank rows if there's no data. So on the server-side, if you comment out the code that populates the dataset, my gridCreated code will execute the IF block. It creates 2 rows, but doesn't give default values. (I could create the 2 blank rows server-side, but that would require maintaining 2 places of default values -- on the grid and in code. But if that's the only way, then so be it.)

Thanks for your help, and look forward to your answers.

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RadGridEditBatchLastRowLogic.aspx.cs" Inherits="RadGridEditBatchLastRowLogic" %>
 
<!DOCTYPE html>
 
<headrunat="server">
    <title></title>
</head>
<body>
    <formid="form1"runat="server">
        <telerik:RadScriptManagerID="RadScriptManager1"runat="server">
            <Scripts>
                <asp:ScriptReferenceAssembly="Telerik.Web.UI"Name="Telerik.Web.UI.Common.Core.js"/>
                <asp:ScriptReferenceAssembly="Telerik.Web.UI"Name="Telerik.Web.UI.Common.jQuery.js"/>
                <asp:ScriptReferenceAssembly="Telerik.Web.UI"Name="Telerik.Web.UI.Common.jQueryInclude.js"/>
            </Scripts>
        </telerik:RadScriptManager>
        <scripttype="text/javascript">
            //Put your JavaScript code here.
 
            function gridCreated(sender, args) {
                var masterTable = sender.get_masterTableView();
                var rows = masterTable.get_dataItems();
                if (rows.length == 0) {
                    var batMan = sender.get_batchEditingManager();
                    batMan.addNewRecord(masterTable);
                    batMan.addNewRecord(masterTable);
                }
            }
 
            function batchEditOpened(sender, args) {
                var batMan = sender.get_batchEditingManager();
                var tableView = args.get_tableView();
                var items = tableView.get_dataItems();
                var item = args.get_row().control;
 
                if (items.length == (item.get_itemIndex() + 1)) {
                    setTimeout(function () {
                        batMan.addNewRecord(tableView);
                        batMan.openCellForEdit(args.get_cell());
                    }, 10);
                }
            }
        </script>
        <telerik:RadAjaxManagerID="RadAjaxManager1"runat="server">
        </telerik:RadAjaxManager>
        <telerik:RadGridID="RadGrid1"runat="server"AllowPaging="False"CellSpacing="0"
            GridLines="None"Width="800px"OnNeedDataSource="RadGrid1_NeedDataSource">
            <ClientSettings AllowKeyboardNavigation="true" >
                <ClientEventsOnBatchEditOpened="batchEditOpened"OnGridCreated="gridCreated"/>
            </ClientSettings>
            <MasterTableViewAutoGenerateColumns="False"DataKeyNames="PurchaseOrderDetailKey"
                EditMode="Batch"InsertItemDisplay="Bottom"CommandItemDisplay="Top">
                <BatchEditingSettingsEditType="Cell"OpenEditingEvent="Click"/>
                <Columns>
 
                    <telerik:GridNumericColumnDataField="PurchaseOrderDetailKey"HeaderText="PurchaseOrderDetailKey"
                        UniqueName="PurchaseOrderDetailKey"DataType="System.Int32"Visible="False"ReadOnly="True">
                    </telerik:GridNumericColumn>
 
                    <telerik:GridTemplateColumnDataField="PostToGeneralLedger"HeaderText="Post"UniqueName="PostToGeneralLedger"DataType="System.Boolean"DefaultInsertValue="true">
                        <HeaderStyleWidth="40px"/>
                        <ItemStyleWidth="40px"/>
                        <ItemTemplate>
                            <inputid="chkPost"type="checkbox"checked='<%# Eval("PostToGeneralLedger") %>' onclick="changeEditor(this);" />
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:CheckBoxID="chkPost"runat="server"Checked='<%# Bind("PostToGeneralLedger") %>' />
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
 
                    <telerik:GridTemplateColumnDataField="UnitPrice"HeaderText="UnitPrice"UniqueName="UnitPrice"DataType="System.Double"DefaultInsertValue="0">
                        <ItemTemplate>
                            <asp:LabelID="lblUnitPrice"runat="server"
                                Text='<%# Eval("UnitPrice") %>'>
                            </asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadNumericTextBoxID="txtUnitPrice"runat="server"DataType="System.Decimal"MaxLength="23"Width="100%"
                                IncrementSettings-InterceptArrowKeys="false"Culture="English (United States)"
                                DbValue='<%# Bind("UnitPrice") %>' Type="Number" NumberFormat-DecimalDigits="4" />
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
 
                    <telerik:GridTemplateColumnDataField="UnitDescription"UniqueName="UnitDescription"HeaderText="Unit Desc"DataType="System.String"DefaultInsertValue="my default">
                        <ItemTemplate>
                            <asp:LabelID="lblUnitDescription"runat="server"
                                Text='<%# Eval("UnitDescription") %>'>
                            </asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <telerik:RadTextBoxID="txtUnitDescription"runat="server"MaxLength="10"Width="100%"
                            Text='<%# Bind("UnitDescription") %>' >
                            </telerik:RadTextBox>
                        </EditItemTemplate>
                    </telerik:GridTemplateColumn>
 
                </Columns>
            </MasterTableView>
        </telerik:RadGrid>
    </form>
</body>
</html>

 

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingTelerik.Web.UI;
 
publicpartialclassRadGridEditBatchLastRowLogic : System.Web.UI.Page
{
    protectedvoidPage_Load(objectsender, EventArgs e)
    {
    }
    protectedvoidRadGrid1_NeedDataSource(objectsender, GridNeedDataSourceEventArgs e)
    {
        RadGrid1.DataSource = GetGridSource();
    }
    privateDataTable GetGridSource()
    {
        DataTable dataTable = newDataTable();
 
        DataColumn column = newDataColumn();
        column.DataType = Type.GetType("System.Int32");
        column.ColumnName = "PurchaseOrderDetailKey";
        dataTable.Columns.Add(column);
 
        column = newDataColumn();
        column.DataType = Type.GetType("System.Boolean");
        column.ColumnName = "PostToGeneralLedger";
        dataTable.Columns.Add(column);
 
        column = newDataColumn();
        column.DataType = Type.GetType("System.Decimal");
        column.ColumnName = "UnitPrice";
        dataTable.Columns.Add(column);
 
        column = newDataColumn();
        column.DataType = Type.GetType("System.String");
        column.ColumnName = "UnitDescription";
        dataTable.Columns.Add(column);
 
        DataColumn[] PrimaryKeyColumns = newDataColumn[1];
        PrimaryKeyColumns[0] = dataTable.Columns["PurchaseOrderDetailKey"];
        dataTable.PrimaryKey = PrimaryKeyColumns;
 
        for(inti = 0; i <= 5; i++)
        {
            DataRow row = dataTable.NewRow();
 
            row["PurchaseOrderDetailKey"] = i + 1;
            row["PostToGeneralLedger"] = true;
            row["UnitPrice"] = (i + 1) + (i + 1) * 0.1 + (i + 1) * 0.01;
            row["UnitDescription"] = "Name "+ (i + 1);
 
            dataTable.Rows.Add(row);
        }
 
        returndataTable;
    }
}

 


Viewing all articles
Browse latest Browse all 84751

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>