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

basic CRUD operations with RadGrid

2 Answers 212 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Sonia
Top achievements
Rank 1
Sonia asked on 12 Aug 2011, 08:37 PM
I am able to update and delete the rows from RadGrid but It gives me following exception on insert :-
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Cannot insert the value NULL into column 'Alert_Level_ID', table 'AlertEmailManagement.dbo.Alert_Level'; column does not allow nulls. INSERT fails.
The statement has been terminated.
The problem is it does insert the row in Database and I am sure that alert_level_id is not null.
eher is my code:-
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/ITIMaster.Master" CodeBehind="AlertLevelAdmin.aspx.vb" Inherits="EmailAlertsMonitor.AlertLevelAdmin" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <telerik:RadGrid ID="gvAlertLevels" runat="server" AutoGenerateColumns="False" 
        CellSpacing="0" DataSourceID="SqlDataSource1" GridLines="None" 
        Skin="Outlook" AllowAutomaticDeletes ="true" AllowAutomaticUpdates ="true" AllowAutomaticInserts="true" >
<MasterTableView DataSourceID="SqlDataSource1" DataKeyNames ="Alert_Level_ID" CommandItemDisplay ="TopAndBottom"  >
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
  
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
  
<ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
  
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
<Columns >
     <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
                        <ItemStyle CssClass="MyImageButton" />
                    </telerik:GridEditCommandColumn>
     <telerik:GridButtonColumn ConfirmText="Are you sure you want to delete this alert?" ConfirmDialogType="RadWindow"
                        ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Delete"
                        UniqueName="DeleteColumn">
                        <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
                    </telerik:GridButtonColumn>
  
    <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column" 
        UniqueName="TemplateColumn" HeaderText ="Alert Level ID">
          <ItemTemplate >
                <asp:Label ID="lblAlertLevelID" runat ="server" Text ='<%#EVAL("Alert_Level_ID") %>'></asp:Label>
          </ItemTemplate>
          <EditItemTemplate >
                <asp:TextBox ID="txtAlertLevelID" runat ="server" Text ='<%#EVAL("Alert_Level_ID") %>'></asp:TextBox>
                <asp:CompareValidator ID="cvAlertLevelID" runat ="server" ControlToValidate ="txtAlertLevelID" Operator ="DataTypeCheck" Type ="Integer" SetFocusOnError ="true" ErrorMessage ="Alert Level ID must be numeric." ForeColor ="Red" ValidationGroup ="editData" ></asp:CompareValidator>
          </EditItemTemplate>
     </telerik:GridTemplateColumn>
     <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column" 
        UniqueName="TemplateColumn" HeaderText ="Alert Level Description">
          <ItemTemplate >
                <asp:Label ID="lblAlertLevel" runat ="server" Text ='<%#EVAL("Alert_Level") %>'></asp:Label>
          </ItemTemplate>
          <EditItemTemplate >
                <asp:TextBox ID="txtAlertLevel" runat ="server" Text ='<%#EVAL("Alert_Level") %>'></asp:TextBox>
                <asp:RequiredFieldValidator ID="rvAlertLevel" runat ="server" ControlToValidate="txtAlertLevel" SetFocusOnError ="true" ErrorMessage ="Must enter Alert Level Description." ForeColor ="Red" ValidationGroup ="editData"></asp:RequiredFieldValidator>
          </EditItemTemplate>
     </telerik:GridTemplateColumn>
    <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column" 
        UniqueName="TemplateColumn3" HeaderText ="Alert Level Color Code">
         <ItemTemplate >
                <asp:Label ID="lblAlertLevelColor" runat ="server" Text ='<%#EVAL("Alert_Level_Color_Code") %>'></asp:Label>
                 
          </ItemTemplate>
          <EditItemTemplate >
                  <telerik:RadColorPicker ID="RadColorPicker1" runat="server" ShowIcon="true" OnColorChanged ="RadColorPicker1_ColorChanged" Width ="250px" Height ="400px" >
                  </telerik:RadColorPicker>
          </EditItemTemplate>
            
    </telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
  
<FilterMenu EnableImageSprites="False"></FilterMenu>
  
<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"></HeaderContextMenu>
    </telerik:RadGrid>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                       ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
                       SelectCommand="SELECT * FROM [Alert_Level]" 
                       InsertCommand ="INSERT INTO [Alert_Level] VALUES(@alertLevelID,@alertLevel,@alertColorCode)"
                       UpdateCommand ="UPDATE [Alert_Level] SET alert_level=@alertLevel,alert_level_color_code=@alertColorCode WHERE alert_Level_ID=@alertLevelID" 
                       DeleteCommand ="DELETE FROM [Alert_Level] WHERE alert_Level_ID=@alertLevelID" >
     <InsertParameters >
       <asp:Parameter Name ="AlertLevelID" Type ="Int16" />
       <asp:Parameter Name ="AlertLevel" Type ="String" />
       <asp:Parameter Name ="AlertColorCode" Type ="String" />
     </InsertParameters>                  
     <UpdateParameters >
       <asp:Parameter Name ="AlertLevelID" Type ="Int16" />
       <asp:Parameter Name ="AlertLevel" Type ="String" />
       <asp:Parameter Name ="AlertColorCode" Type ="String" />
     </UpdateParameters>                 
     <DeleteParameters >
       <asp:Parameter Name ="AlertLevelID" Type ="Int16" />
     </DeleteParameters>                  
                         
</asp:SqlDataSource>
</asp:Content>
Imports Telerik.Web.UI
Imports System.Drawing
Public Class AlertLevelAdmin
    Inherits System.Web.UI.Page
  
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  
    End Sub
  
    Public Sub RadColorPicker1_ColorChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim RadColorPicker1 As RadColorPicker = CType(sender, RadColorPicker)
        Dim gvItem As GridItem = DirectCast(RadColorPicker1.NamingContainer, GridItem)
        gvItem.BackColor = RadColorPicker1.SelectedColor
    End Sub
  
    Private Sub gvAlertLevels_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles gvAlertLevels.ItemDataBound
        If TypeOf e.Item Is GridDataItem Then
            Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
            item("TemplateColumn3").BackColor = ColorTranslator.FromHtml((DataBinder.Eval(e.Item.DataItem, ("Alert_Level_Color_Code").ToString)))
        End If
  
        Dim radColorPicker1 As RadColorPicker = DirectCast(e.Item.FindControl("RadColorPicker1"), RadColorPicker)
        If Not IsNothing(radColorPicker1) Then
            If Not IsDBNull(DataBinder.Eval(e.Item.DataItem, ("Alert_Level_Color_Code"))) Then
                radColorPicker1.SelectedColor = ColorTranslator.FromHtml((DataBinder.Eval(e.Item.DataItem, ("Alert_Level_Color_Code").ToString)))
            End If
        End If
  
  
    End Sub
  
    Private Sub gvAlertLevels_ItemDeleted(sender As Object, e As Telerik.Web.UI.GridDeletedEventArgs) Handles gvAlertLevels.ItemDeleted
        Try
            Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
            Dim alertLevelID As Integer = CInt(item.GetDataKeyValue("Alert_Level_ID").ToString)
            SqlDataSource1.DeleteParameters("AlertLevelID").DefaultValue = alertLevelID
            SqlDataSource1.Delete()
        Catch ex As Exception
  
        End Try
    End Sub
  
    Private Sub gvAlertLevels_ItemInserted(sender As Object, e As Telerik.Web.UI.GridInsertedEventArgs) Handles gvAlertLevels.ItemInserted
        Try
            Dim alertLevelID As Integer = DirectCast(e.Item.FindControl("txtAlertLevelID"), TextBox).Text
            Dim alertLevel As String = DirectCast(e.Item.FindControl("txtAlertLevel"), TextBox).Text
            Dim alertColorCode As String = ColorTranslator.ToHtml(DirectCast(e.Item.FindControl("RadColorPicker1"), RadColorPicker).SelectedColor)
            SqlDataSource1.InsertParameters("AlertLevelID").DefaultValue = alertLevelID
            SqlDataSource1.InsertParameters("AlertLevel").DefaultValue = alertLevel.ToUpper
            SqlDataSource1.InsertParameters("AlertColorCode").DefaultValue = alertColorCode
            SqlDataSource1.Insert()
        Catch ex As Exception
  
        End Try
    End Sub
  
    Private Sub gvAlertLevels_ItemUpdated(sender As Object, e As Telerik.Web.UI.GridUpdatedEventArgs) Handles gvAlertLevels.ItemUpdated
        Try
            Dim item As GridEditFormItem = DirectCast(e.Item, GridEditFormItem)
            Dim alertLevelID As Integer = CInt(item.GetDataKeyValue("Alert_Level_ID").ToString)
            Dim alertLevel As String = DirectCast(item.FindControl("txtAlertLevel"), TextBox).Text
            Dim alertColorCode As String = ColorTranslator.ToHtml(DirectCast(item.FindControl("RadColorPicker1"), RadColorPicker).SelectedColor)
            SqlDataSource1.UpdateParameters("AlertLevelID").DefaultValue = alertLevelID
            SqlDataSource1.UpdateParameters("AlertLevel").DefaultValue = alertLevel.ToUpper
            SqlDataSource1.UpdateParameters("AlertColorCode").DefaultValue = alertColorCode
            SqlDataSource1.Update()
        Catch ex As Exception
  
        End Try
    End Sub
End Class

2 Answers, 1 is accepted

Sort by
0
Accepted
Radoslav
Telerik team
answered on 18 Aug 2011, 07:56 AM
Hi Sonia,

Could you please try modifying the GridTemplateColumn and the SqlDataSource's Insert query as following and let me know if the issue still persists:
<telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column"
        UniqueName="TemplateColumn" HeaderText ="Alert Level ID">
          <ItemTemplate >
                <asp:Label ID="lblAlertLevelID" runat ="server" Text ='<%#EVAL("Alert_Level_ID") %>'></asp:Label>
          </ItemTemplate>
          <EditItemTemplate >
                <asp:TextBox ID="txtAlertLevelID" runat ="server" Text ='<%# Bind("Alert_Level_ID") %>'></asp:TextBox>
                <asp:CompareValidator ID="cvAlertLevelID" runat ="server" ControlToValidate ="txtAlertLevelID" Operator ="DataTypeCheck" Type ="Integer" SetFocusOnError ="true" ErrorMessage ="Alert Level ID must be numeric." ForeColor ="Red" ValidationGroup ="editData" ></asp:CompareValidator>
          </EditItemTemplate>
     </telerik:GridTemplateColumn>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
                       ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
                       SelectCommand="SELECT * FROM [Alert_Level]" 
                       InsertCommand ="INSERT INTO [Alert_Level] VALUES(@alertLevelID,@alertLevel,@alertColorCode)"
                       UpdateCommand ="UPDATE [Alert_Level] SET alert_level=@alertLevel,alert_level_color_code=@alertColorCode WHERE alert_Level_ID=@alertLevelID" 
                       DeleteCommand ="DELETE FROM [Alert_Level] WHERE alert_Level_ID=@alertLevelID" >
     <InsertParameters >
       <asp:Parameter Name ="Alert_Level_ID" Type ="Int16" />
       <asp:Parameter Name ="AlertLevel" Type ="String" />
       <asp:Parameter Name ="AlertColorCode" Type ="String" />
     </InsertParameters>                  
     <UpdateParameters >
       <asp:Parameter Name ="AlertLevelID" Type ="Int16" />
       <asp:Parameter Name ="AlertLevel" Type ="String" />
       <asp:Parameter Name ="AlertColorCode" Type ="String" />
     </UpdateParameters>                 
     <DeleteParameters >
       <asp:Parameter Name ="AlertLevelID" Type ="Int16" />
     </DeleteParameters>                  
                          
</asp:SqlDataSource>

Looking forward for your reply.

Kind regards,
Radoslav
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Sonia
Top achievements
Rank 1
answered on 18 Aug 2011, 02:38 PM
Thak You ! that works great but there is small problem, I have DropDownlist in some columns and radcolorpicker and it is not picking the values from dropdown and radcolorpicker other than it works like a charm!
Tags
Grid
Asked by
Sonia
Top achievements
Rank 1
Answers by
Radoslav
Telerik team
Sonia
Top achievements
Rank 1
Share this question
or