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

radgrid add new record button doesn't work

3 Answers 203 Views
Grid
This is a migrated thread and some comments may be shown as answers.
M
Top achievements
Rank 1
M asked on 10 Sep 2011, 03:49 PM
When I click on the  'Refresh' nothing happens.
When I click on the 'Add New Record' I'm getting this error:
Line: 15
Error: Sys.WebForms.PageRequestManagerServerErrorException: 'ddl_menu' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value


I'm using ASP.NET Ajax Q3 2009 NET35,  v.2009, 3, 1208, 35
What am I missing?
Here is the code:

<%@ Page Title="" Language="C#" MasterPageFile="~/admin/AdminMasterPage.master" AutoEventWireup="true" CodeFile="pdf_docs.aspx.cs" Inherits="admin_pdf_docs" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <tr>
        <td width="100%">
            <center><b><asp:Label ID="lbl_page_title" runat="server" CssClass="lbl_title"></asp:Label></b></center>
        </td>
    </tr>
    <tr>
        <td width="100%" style="border-style: solid none none none; border-top-width: 1px; border-top-color: #000000">
              
        </td>
    </tr>
    <tr>
        <td width="100%">
            <asp:Label ID="lbl_content" runat="server" />
        </td>
    </tr>
    <tr>
        <td width="100%">
            <hr color="#999999" size="1">
        </td>
    </tr>
    <tr>
        <td width="100%" align="left">
        <p id="divMsgs" runat="server">
            <asp:Label ID="Label1" runat="server" EnableViewState="False" Font-Bold="True" ForeColor="#FF8080"></asp:Label>
            <asp:Label ID="Label2" runat="server" EnableViewState="False" Font-Bold="True" ForeColor="#00C000"></asp:Label>
        </p>
            <telerik:RadGrid ID="RadGrid1" runat="server"
                AllowFilteringByColumn="True"
                AllowPaging="True"
                AllowSorting="True"
                AutoGenerateColumns="False"
                DataSourceID="SqlDataSource1"
                OnItemDeleted="RadGrid1_ItemDeleted"
                OnItemInserted="RadGrid1_ItemInserted"
                OnItemUpdated="RadGrid1_ItemUpdated"
                GridLines="None"
                AllowAutomaticDeletes="True"
                AllowAutomaticInserts="True"
                AllowAutomaticUpdates="True" Skin="Outlook">
                <ClientSettings AllowColumnsReorder="True">
                    <Selecting AllowRowSelect="True" />
                </ClientSettings>
                <GroupingSettings CaseSensitive="false" />
            <MasterTableView autogeneratecolumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" CommandItemDisplay="TopAndBottom" HorizontalAlign="NotSet" AllowAutomaticInserts="true" AllowAutomaticUpdates="true" >
                <Columns>
                    <telerik:GridEditCommandColumn ButtonType="PushButton" UniqueName="EditCommandColumn">
                    </telerik:GridEditCommandColumn>
                    <telerik:GridBoundColumn DataField="s_doc_title" DefaultInsertValue="" HeaderText="s_doc_title" UniqueName="s_doc_title" SortExpression="s_doc_title">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="s_doc_url" DefaultInsertValue="" HeaderText="s_doc_url" SortExpression="s_doc_url" UniqueName="s_doc_url">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="d_date_uploaded" DataType="System.DateTime" DefaultInsertValue="" HeaderText="d_date_uploaded" SortExpression="d_date_uploaded" UniqueName="d_date_uploaded">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="d_date_displayed" DataType="System.DateTime" DefaultInsertValue="" HeaderText="d_date_displayed" SortExpression="d_date_displayed" UniqueName="d_date_displayed">
                    </telerik:GridBoundColumn>
                    <telerik:GridCheckBoxColumn DataField="b_visible" DefaultInsertValue="" HeaderText="b_visible" UniqueName="b_visible" DataType="System.Boolean" SortExpression="b_visible">
                    </telerik:GridCheckBoxColumn>
                    <telerik:GridButtonColumn ConfirmText="Delete this Document?" ConfirmDialogType="RadWindow"
                        ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn">
                        <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
                    </telerik:GridButtonColumn>
                </Columns>
                    <EditFormSettings ColumnNumber="3" CaptionFormatString="Edit details for {0}" CaptionDataField="id" EditColumn-ButtonType="PushButton" EditFormType="Template">
                    <FormTableItemStyle Wrap="False"></FormTableItemStyle>
                    <FormTableStyle CellPadding="2" CellSpacing="0" GridLines="Horizontal" CssClass="module" Height="110px" Width="100%"></FormTableStyle>
                    <FormMainTableStyle CellPadding="3" CellSpacing="0" Width="100%"></FormMainTableStyle>
                    <FormCaptionStyle CssClass="EditFormHeader"></FormCaptionStyle>
                    <FormMainTableStyle GridLines="None" CellSpacing="0" CellPadding="3" Width="100%" />
                    <FormTableStyle GridLines="Horizontal" CellSpacing="0" CellPadding="2" CssClass="module" Height="110px" Width="100%" />
                    <FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle>
                    <FormStyle Width="100%" BackColor="#eef2ea"></FormStyle>
                    <EditColumn UpdateText="Update record" UniqueName="EditCommandColumn1" CancelText="Cancel edit" ButtonType="PushButton" InsertText="Insert Record" >
                    </EditColumn>
                    <FormTableButtonRowStyle HorizontalAlign="Left" CssClass="EditFormButtonRow"></FormTableButtonRowStyle>
                    <FormTemplate>
                        <table cellspacing="0" cellpadding="0" border="0">
                            <tr>
                                <td width="400">
                                    <table cellspacing="0" cellpadding="0" border="0">
                                        <tr>
                                            <td width="5">
                                            </td>
                                            <td width="375" valign="top">
                                                ID:
                                            </td>
                                            <td>
                                                <asp:Label ID="lbl_id" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td width="5">
                                            </td>
                                            <td width="375" valign="top">
                                                Page:
                                            </td>
                                            <td>
                                                <asp:DropDownList ID="ddl_menu" runat="server"
                                                    DataTextField="MenuText"
                                                    DataValueField="MenuId"
                                                    DataSourceID="SqlDataSource3"
                                                    SelectedValue='<%# Bind("MenuId") %>'>
                                                </asp:DropDownList>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td width="5">
                                            </td>
                                            <td width="375" valign="top">
                                                Doc. Title:
                                            </td>
                                            <td>
                                                <asp:TextBox Width="240px" ID="txtbx_title" runat="server" Text='<%# Bind("s_doc_title") %>'></asp:TextBox>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td width="5">
                                            </td>
                                            <td width="375" valign="top">
                                                Date Uploaded:
                                            </td>
                                            <td>
                                                <asp:TextBox Width="240px" ID="TextBox3" runat="server" Text='<%# Bind("d_date_uploaded") %>'></asp:TextBox>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td width="5">
                                            </td>
                                            <td width="375" valign="top">
                                                Date Displayed:
                                            </td>
                                            <td>
                                                <asp:TextBox Width="240px" ID="TextBox4" runat="server" Text='<%# Bind("d_date_displayed") %>'></asp:TextBox>
                                            </td>
                                        </tr>
                                    </table>
                                </td>
                                <td width="400">
                                    <table>
                                        <tr>
                                            <td width="5">
                                            </td>
                                            <td width="90" valign="top">
                                                PDF File Name:
                                            </td>
                                            <td>
                                                <asp:TextBox Width="240px" ID="TextBox2" runat="server" Text='<%# Bind("s_doc_url") %>'></asp:TextBox>
                                                <asp:Button ID="btn_pdf_upload" runat="server" Text="Upload PDF File" onclick="btn_pdf_upload_Click" />
                                            </td>
                                        </tr>
                                    </table>   
                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" align="center">
                                    <asp:Button ID="btnUpdate" Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>' runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'>
                                    </asp:Button>
                                    <asp:Button ID="Button2" runat="server" Text="Cancel" CausesValidation="false" CommandName="Cancel"></asp:Button>
                                </td>
                            </tr>
                        </table>
                        </FormTemplate>
                    </EditFormSettings>            
                    <PagerStyle Position="TopAndBottom" />
                </MasterTableView>
            </telerik:RadGrid>
                <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                    SelectCommand="SELECT [MenuId], [MenuText] FROM [tbl_menu] ORDER BY [MenuText]">
                </asp:SqlDataSource>
                     
            <br />
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                SelectCommand="SELECT * FROM [tbl_pdf_docs] ORDER BY [MenuId]" DeleteCommand="DELETE FROM [tbl_pdf_docs] WHERE [id] = @id"
                InsertCommand="INSERT INTO [tbl_pdf_docs] ([MenuId], [s_doc_title], [s_link_title], [s_doc_url], [d_date_uploaded], [d_date_displayed], [b_visible]) VALUES (@MenuId, @s_doc_title, @s_link_title, @s_doc_url, @d_date_uploaded, @d_date_displayed, @b_visible)"
                 
                UpdateCommand="UPDATE [tbl_pdf_docs] SET [MenuId] = @MenuId, [s_doc_title] = @s_doc_title, [s_doc_url] = @s_doc_url, [d_date_uploaded] = @d_date_uploaded, [d_date_displayed] = @d_date_displayed, [b_visible] = @b_visible WHERE [id] = @id">
                <DeleteParameters>
                    <asp:Parameter Name="id" Type="Int32" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="MenuId" Type="String" />
                    <asp:Parameter Name="s_doc_title" Type="String" />
                    <asp:Parameter Name="s_doc_url" Type="String" />
                    <asp:Parameter Name="d_date_uploaded" Type="DateTime" />
                    <asp:Parameter Name="d_date_displayed" Type="DateTime" />
                    <asp:Parameter Name="b_visible" Type="Boolean" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="MenuId" Type="String" />
                    <asp:Parameter Name="s_doc_title" Type="String" />
                    <asp:Parameter Name="s_doc_url" Type="String" />
                    <asp:Parameter Name="d_date_uploaded" Type="DateTime" />
                    <asp:Parameter Name="d_date_displayed" Type="DateTime" />
                    <asp:Parameter Name="b_visible" Type="Boolean" />
                    <asp:Parameter Name="id" Type="Int32" />
                </UpdateParameters>
            </asp:SqlDataSource>
             
        </td>
    </tr>
    <telerik:RadAjaxManager runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadGrid1">
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="SqlDataSource1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                    <telerik:AjaxUpdatedControl ControlID="SqlDataSource1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    
</asp:Content>

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI;
 
public partial class admin_pdf_docs : System.Web.UI.Page
{
    protected void RadGrid1_ItemUpdated(object source, Telerik.Web.UI.GridUpdatedEventArgs e)
    {
        if (e.Exception != null)
        {
            e.KeepInEditMode = true;
            e.ExceptionHandled = true;
            DisplayMessage(true, "Title " + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["s_doc_title"] + " cannot be updated. Reason: " + e.Exception.Message);
        }
        else
        {
            DisplayMessage(false, "Title " + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["s_doc_title"] + " updated");
        }
    }
 
    protected void RadGrid1_ItemInserted(object source, GridInsertedEventArgs e)
    {
        if (e.Exception != null)
        {
            e.ExceptionHandled = true;
            e.KeepInInsertMode = true;
            DisplayMessage(true, "Title cannot be inserted. Reason: " + e.Exception.Message);
        }
        else
        {
            DisplayMessage(false, "Title inserted");
        }
    }
 
    protected void RadGrid1_ItemDeleted(object source, GridDeletedEventArgs e)
    {
        if (e.Exception != null)
        {
            e.ExceptionHandled = true;
            DisplayMessage(true, "Title " + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["s_doc_title"] + " cannot be deleted. Reason: " + e.Exception.Message);
        }
        else
        {
            DisplayMessage(false, "Title " + e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["s_doc_title"] + " deleted");
        }
    }
 
    private void DisplayMessage(bool isError, string text)
    {
        Label label = (isError) ? this.Label1 : this.Label2;
        label.Text = text;
    }
 
    private static DataTable tblData = new DataTable();
 
    protected void Page_Load(object sender, System.EventArgs e)
    {
         
 
    }
 
    
     
    protected void btn_pdf_upload_Click(object sender, EventArgs e)
    {
         
        Response.Redirect("pdf_file_upload.aspx");
    }
 
 
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
        {
            GridEditFormItem editform = (GridEditFormItem)e.Item;
 
            DropDownList ddl_menu_items = (DropDownList)editform.FindControl("ddl_menu");
 
            ddl_menu_items.DataValueField = "MenuId";
            ddl_menu_items.DataTextField = "MenuText";
            ddl_menu_items.SelectedValue = "MenuId";
            ddl_menu_items.DataBind();
 
             
        }
    }
}

3 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 12 Sep 2011, 04:26 PM
Hello,

Please make sure that the selected value is there in the populated value. Another suggestion is to use Text property instead of selectedValue.
Also take a look in to the following help article which explains more on dropdownlist inside RadGrid.
Operations with MS DropDownList in EditItemTemplate of GridTemplateColumn.

Thanks,
Princy.
0
M
Top achievements
Rank 1
answered on 12 Sep 2011, 06:35 PM
There is no Text property in an asp:DropDownList control
I tried your example and ran into errors:

Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)
at
list.SelectedValue = Session["updatedValue"];
0
Elliott
Top achievements
Rank 2
answered on 12 Sep 2011, 07:16 PM
another approach is not to set
ddl_menu_items.SelectedValue = "MenuId";
if the item is a new record

use       
If TypeOf e.Item Is IGridInsertItem Then (this is VB, translate into C#)
Tags
Grid
Asked by
M
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
M
Top achievements
Rank 1
Elliott
Top achievements
Rank 2
Share this question
or