This is a migrated thread and some comments may be shown as answers.

Error while adding new row to grid

2 Answers 109 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Sunil
Top achievements
Rank 1
Sunil asked on 21 Feb 2011, 02:28 PM
Dear All,
I am loading a blank row on page load.  I am unable to add a new row in grid on Add Row context Radmenu item click. For your reference please go through the code below
following is the aspx code and server code. Any help will be greatly appreciated.

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm4.aspx.vb" Inherits="BNBERP.WebForm4" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<head runat="server">
    <title></title>
</head>
<body>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
    function RowContextMenu(sender, eventArgs) {
        var menu = $find("<%=RadMenu1.ClientID %>");
        var evt = eventArgs.get_domEvent();
 
        if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") {
            return;
        }
 
        var index = eventArgs.get_itemIndexHierarchical();
        document.getElementById("radGridClickedRowIndex").value = index;
 
        sender.get_masterTableView().selectItem(sender.get_masterTableView().get_dataItems()[index].get_element(), true);
 
        menu.show(evt);
 
        evt.cancelBubble = true;
        evt.returnValue = false;
 
        if (evt.stopPropagation) {
            evt.stopPropagation();
            evt.preventDefault();
        }
    }
        </script>
</telerik:RadCodeBlock>
    <form id="form1" runat="server">
 
<div>
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
     
         
            <telerik:RadButton ID="RadButton1" runat="server" Text="Get Data">
            </telerik:RadButton>
        <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False"
            Skin="Forest" EnableHeaderContextMenu="True">
        <MasterTableView >
<CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings>
        <Columns>
         
        <telerik:GridTemplateColumn HeaderText="Item No">
        <ItemTemplate>
            <telerik:RadComboBox ID="RadComboBox1" runat="server"
                DataSourceID="SqlDataSource1" DataTextField="ItemCode"
                DataValueField="ItemCode">
            </telerik:RadComboBox>
        
            <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                ConnectionString="<%$ ConnectionStrings:SBODemoINConnectionString %>"
                SelectCommand="SELECT [ItemCode], [ItemName] FROM [OITM]">
            </asp:SqlDataSource>
        
        </ItemTemplate>
        </telerik:GridTemplateColumn>
 
        <telerik:GridTemplateColumn HeaderText="Item Description">
        <ItemTemplate>
      <telerik:RadComboBox ID="RadComboBox2" runat="server" DataSourceID="SqlDataSource2"
                DataTextField="ItemName" DataValueField="ItemCode">
            </telerik:RadComboBox>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server"
                ConnectionString="<%$ ConnectionStrings:SBODemoINConnectionString %>"
                SelectCommand="SELECT [ItemCode], [ItemName] FROM [OITM]">
            </asp:SqlDataSource>
        </ItemTemplate>
        </telerik:GridTemplateColumn>
 
        <telerik:GridTemplateColumn HeaderText="On Hand">
        <ItemTemplate>
       <telerik:RadTextBox ID="RadTextBox3" Runat="server">
            </telerik:RadTextBox>
        </ItemTemplate>        
        </telerik:GridTemplateColumn>
 
        <telerik:GridTemplateColumn HeaderText="Prefered Vendor">
        <ItemTemplate>
       <telerik:RadTextBox ID="RadTextBox4" Runat="server">
            </telerik:RadTextBox>
        </ItemTemplate>        
        </telerik:GridTemplateColumn>
 
        </Columns>
            </MasterTableView>
        <ClientSettings>
        <ClientEvents  OnRowContextMenu="RowContextMenu" />
        </ClientSettings>
<HeaderContextMenu EnableImageSprites="True" CssClass="GridContextMenu GridContextMenu_Default"></HeaderContextMenu>
        </telerik:RadGrid>
 
        <input type="hidden" id="radGridClickedRowIndex" name="radGridClickedRowIndex" />
            <telerik:RadContextMenu ID="RadMenu1" runat="server"
            EnableRoundedCorners="true" EnableShadows="true">
            <Items>
                <telerik:RadMenuItem Text="Add Row" />
                <telerik:RadMenuItem Text="Delete Row" />
                <telerik:RadMenuItem Text="Duplicate Row"/>
            </Items>
        </telerik:RadContextMenu>
        <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Height="200px" Width="300px">
        </telerik:RadAjaxPanel>
    </div>
  
    </form>
</body>
</html>
Imports Telerik.Web.UI
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class WebForm4
    Inherits System.Web.UI.Page
    Dim sqlCon As SqlConnection
    Dim sqlDa As SqlDataAdapter
    Dim sqlDs As DataSet
    Dim sqlDt, sqlDt1 As DataTable
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            If Not Page.IsPostBack Then
 
                'Dim box1 As RadComboBox = DirectCast(RadGrid1.Items(0).FindControl("RadComboBox1"), RadComboBox)
                'Dim col As GridTemplateColumn
                'col = RadGrid1.Columns(0)
 
                sqlCon = New SqlConnection("Data Source=BNBSOFT-EF98F06\SQLEXPRESS;Initial Catalog=SBODemoIN;Integrated Security=True")
                sqlDa = New SqlDataAdapter("SELECT [ItemCode],[ItemName],[OnHand],[CardCode] FROM [SBODemoIN].[dbo].[OITM]", sqlCon)
                sqlDs = New DataSet()
                sqlDt = New DataTable()
                sqlDa.FillSchema(sqlDt, SchemaType.Source)
                For Each column As DataColumn In sqlDt.Columns()
                    column.AllowDBNull = "True"
                Next
 
                SetInitialRow(sqlDt)
 
            End If
        Catch ex As Exception
 
        End Try
    End Sub
    Private Sub FillItemsCombo()
        sqlCon = New SqlConnection("Data Source=BNBSOFT-EF98F06\SQLEXPRESS;Initial Catalog=SBODemoIN;Integrated Security=True")
        sqlDa = New SqlDataAdapter("SELECT [ItemCode],[ItemName],[OnHand],[CardCode] FROM [SBODemoIN].[dbo].[OITM]", sqlCon)
 
    End Sub
    Private Sub SetInitialRow(ByRef dt1 As DataTable)
        Dim dt As New DataTable()
        dt = dt1
        Dim dr As DataRow = Nothing
        dr = dt.NewRow()
        dr.Item(2) = "4.0"
        dt.Rows.Add(dr)
 
 
        'Store the DataTable in ViewState
        ViewState("CurrentTable") = dt
 
        RadGrid1.DataSource = dt
        RadGrid1.DataBind()
        SetPreviousData()
        'DirectCast(item("YourColumnUniqueName").FindControl("IDofYourRadTextBox"), RadTextBox).Text()
 
    End Sub
 
 
    Private Sub SetPreviousData()
        Dim rowIndex As Integer = 0
        If ViewState("CurrentTable") IsNot Nothing Then
            Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
            If dt.Rows.Count > 0 Then
                For i As Integer = 0 To dt.Rows.Count - 1
                    Dim box1 As RadComboBox = DirectCast(RadGrid1.Items(rowIndex).Cells(0).FindControl("RadComboBox1"), RadComboBox)
                    Dim box2 As RadComboBox = DirectCast(RadGrid1.Items(rowIndex).Cells(1).FindControl("RadComboBox2"), RadComboBox)
                    Dim box3 As RadTextBox = DirectCast(RadGrid1.Items(rowIndex).Cells(2).FindControl("RadTextBox3"), RadTextBox)
                    Dim box4 As RadTextBox = DirectCast(RadGrid1.Items(rowIndex).Cells(3).FindControl("RadTextBox4"), RadTextBox)
 
                    'If box1.Items.Count <= 0 Then
                    '    sqlCon = New SqlConnection("Data Source=BNBSOFT-EF98F06\SQLEXPRESS;Initial Catalog=SBODemoIN;Integrated Security=True")
                    '    sqlDa = New SqlDataAdapter("SELECT [ItemCode],[ItemName],[OnHand],[CardCode] FROM [SBODemoIN].[dbo].[OITM]", sqlCon)
                    '    sqlDs = New DataSet
                    '    sqlDa.Fill(sqlDs)
                    '    Dim rs, rs1 As RadComboBoxItem
 
                    '    For j As Integer = 0 To sqlDs.Tables(0).Rows.Count
                    '        rs = New RadComboBoxItem(sqlDs.Tables(0).Rows(j)(0).ToString(), sqlDs.Tables(0).Rows(j)(0).ToString())
                    '        rs1 = New RadComboBoxItem(sqlDs.Tables(0).Rows(j)(0).ToString(), sqlDs.Tables(0).Rows(j)(0).ToString())
                    '        box1.Items.Add(rs)
                    '        box2.Items.Add(rs1)
                    '    Next
                    'End If
                    'box1.SelectedValue = dt.Rows(i)("ItemCode").ToString()
                    box1.SelectedIndex = 0
                    box2.SelectedIndex = 0
                    ' box2.Text = dt.Rows(i)("ItemName").ToString()
                    box3.Text = dt.Rows(i)("OnHand").ToString()
                    box4.Text = dt.Rows(i)("CardCode").ToString()
 
                    rowIndex += 1
                Next
            End If
        End If
    End Sub
 
    Private Sub AddNewRowToGrid()
        Dim rowIndex As Integer = 0
 
        If ViewState("CurrentTable") IsNot Nothing Then
            Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
            Dim drCurrentRow As DataRow = Nothing
            If dtCurrentTable.Rows.Count > 0 Then
                For i As Integer = 1 To dtCurrentTable.Rows.Count
                    'extract the TextBox values
                    Dim box1 As RadComboBox = DirectCast(RadGrid1.Items(rowIndex).Cells(0).FindControl("RadComboBox1"), RadComboBox)
                    Dim box2 As RadComboBox = DirectCast(RadGrid1.Items(rowIndex).Cells(1).FindControl("RadComboBox2"), RadComboBox)
                    Dim box3 As RadTextBox = DirectCast(RadGrid1.Items(rowIndex).Cells(2).FindControl("RadTextBox3"), RadTextBox)
                    Dim box4 As RadTextBox = DirectCast(RadGrid1.Items(rowIndex).Cells(3).FindControl("RadTextBox4"), RadTextBox)
                    drCurrentRow = dtCurrentTable.NewRow()
                    dtCurrentTable.Rows(i - 1)("ItemCode") = box1.SelectedItem
                    dtCurrentTable.Rows(i - 1)("ItemName") = box2.SelectedItem
                    dtCurrentTable.Rows(i - 1)("OnHand") = box3.Text
                    dtCurrentTable.Rows(i - 1)("CardCode") = box4.Text
                    rowIndex += 1
                Next
                dtCurrentTable.Rows.Add(drCurrentRow)
                ViewState("CurrentTable") = dtCurrentTable
 
                RadGrid1.DataSource = dtCurrentTable
                RadGrid1.DataBind()
            End If
        Else
            Response.Write("ViewState is null")
        End If
 
        'Set Previous Data on Postbacks
        SetPreviousData()
    End Sub
 
     
 
 
    Private Sub RadMenu1_ItemClick(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadMenuEventArgs) Handles RadMenu1.ItemClick
        Dim radGridClickedRowIndex As Integer
        Try
            radGridClickedRowIndex = Convert.ToInt32(Request.Form("radGridClickedRowIndex"))
 
            Select Case e.Item.Text
                Case "Duplicate Row"
                    'AddDuplicateRowToGrid(radGridClickedRowIndex)
                    Exit Select
                Case "Add Row"
                    AddNewRowToGrid()
                    Exit Select
                Case "Delete Row"
                    'DeleteRowFromGrid(radGridClickedRowIndex)
                    'RadGrid1.Items(radGridClickedRowIndex).
                    'RadGrid1.MasterTableView.PerformDelete(RadGrid1.Items(radGridClickedRowIndex))
                    Exit Select
            End Select
        Catch ex As Exception
 
        End Try
    End Sub
 
    Protected Sub RadButton1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles RadButton1.Click
        Try
            AddNewRowToGrid()
        Catch ex As Exception
 
        End Try
 
    End Sub
 
     
End Class


2 Answers, 1 is accepted

Sort by
0
Iana Tsolova
Telerik team
answered on 24 Feb 2011, 09:11 AM
Hello Sunil,

Can you elaborate a bit more on the behavior you observe on your end? Are you able to go into insert mode or some error is thrown upon insertion?

Greetings,
Iana
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
0
Sunil
Top achievements
Rank 1
answered on 24 Feb 2011, 10:00 AM
Thanks for your reply ...
I was getting error when  i was adding new row in the grid.

That problem was solved now.

Thanks a lot..
Tags
Grid
Asked by
Sunil
Top achievements
Rank 1
Answers by
Iana Tsolova
Telerik team
Sunil
Top achievements
Rank 1
Share this question
or