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

Retrieve inserted values

3 Answers 97 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Christophe
Top achievements
Rank 1
Christophe asked on 25 Nov 2011, 01:50 PM
Hello,

I have a problem to retrieve data in insert mode. It works fine in Update mode ...

<telerik:RadGrid ID="RadGridNomenclature" EnableViewState="true" OnItemCommand="RadGridNomenclature_ItemCommand" OnItemDataBound="RadGridNomenclature_ItemDataBound" OnUnload="RadGridNomenclature_Unload" OnNeedDataSource="RadGridNomenclature_NeedDataSource" OnInsertCommand="RadGridNomenclature_InsertCommand" OnDeleteCommand="RadGridNomenclature_DeleteCommand" OnUpdateCommand="RadGridNomenclature_UpdateCommand" runat="server" Skin="Windows7" PageSize="20" Width="777px">
    <MasterTableView AllowAutomaticInserts="true" AutoGenerateColumns="false" DataKeyNames="uid" InsertItemPageIndexAction="ShowItemOnCurrentPage" AllowPaging="True" CommandItemDisplay="Top">
        <Columns>
            <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
                <ItemStyle CssClass="MyImageButton" />
            </telerik:GridEditCommandColumn>
 
            <telerik:GridTemplateColumn HeaderText="UID" SortExpression="uid" UniqueName="uid" Visible="True">
                <HeaderStyle Width="175px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="uid" Text='<%# Eval("uid") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxUid" runat="server" Text='Calculated by the system' Width="175px" ReadOnly="True" Enabled="false" />
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxUid" runat="server" Text='<%# Bind("uid") %>' Width="175px" ReadOnly="True" />
                </EditItemTemplate>
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="Description" SortExpression="description" UniqueName="description" Visible="True">
                <HeaderStyle Width="500px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="description" Text='<%# Eval("description") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxDescription" runat="server" Width="450px" />
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxDescription" runat="server" Text='<%# Bind("description") %>' Width="450px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="ISO country code" SortExpression="c" UniqueName="c" Visible="False">
                <HeaderStyle Width="75px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="c" Text='<%# Eval("c") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxC" runat="server" Width="100px"/>
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxC" runat="server" Text='<%# Bind("c") %>' Width="100px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="Identifiant telephonique" SortExpression="code" UniqueName="code" Visible="False">
                <HeaderStyle Width="75px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="code" Text='<%# Eval("code") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxCode" runat="server" Width="100px"/>
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxCode" runat="server" Text='<%# Bind("code") %>' Width="100px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridTemplateColumn HeaderText="Nationality" SortExpression="nationality" UniqueName="nationality" Visible="False">
                <HeaderStyle Width="175px" />
                <ItemTemplate>
                    <asp:Label runat="server" ID="nationality" Text='<%# Eval("nationality") %>'></asp:Label>
                </ItemTemplate>
                <InsertItemTemplate>
                    <telerik:RadTextBox ID="RadTextBoxNationality" runat="server" Width="210px"/>
                </InsertItemTemplate>
                <EditItemTemplate>
                   <telerik:RadTextBox ID="RadTextBoxNationality" runat="server" Text='<%# Bind("nationality") %>' Width="210px" />
                </EditItemTemplate>               
            </telerik:GridTemplateColumn>
 
            <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmText="Delete this product?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ConfirmDialogWidth="220px">
                <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
            </telerik:GridButtonColumn>
        </Columns>
        <EditFormSettings CaptionDataField="Description">
            <EditColumn ButtonType="ImageButton" />
            <FormTableButtonRowStyle HorizontalAlign="Right" CssClass="EditFormButtonRow" />
        </EditFormSettings>
    </MasterTableView>
</telerik:RadGrid>

Here is the UpdateCommand function :

protected void RadGridNomenclature_UpdateCommand(object sender, GridCommandEventArgs e)
        {
            GridEditableItem item = e.Item as GridEditableItem;
 
            Hashtable newValues = new Hashtable();
            e.Item.OwnerTableView.ExtractValuesFromItem(newValues, item);
             
            [...]
        }

I can retrieve key and values in the newValues Hashtable.

The same code for the insert commande return me an empty newValues Hashtable.

protected void RadGridNomenclature_InsertCommand(object sender, GridCommandEventArgs e)
{
    GridEditableItem item = e.Item as GridEditableItem;
 
    Hashtable newValues = new Hashtable();
    e.Item.OwnerTableView.ExtractValuesFromItem(newValues, item);
 
    String desc = newValues["description"].ToString();  // ---------- newValues is Empty ---------------
}

Have you any ideas ?

Regards,

3 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 25 Nov 2011, 01:59 PM
Hello Christophe,

Try the following code snippet.
C#:
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
{
   GridEditFormInsertItem item = (GridEditFormInsertItem)e.Item;
   TextBox txt = (TextBox)item["description"].Controls[0];
   string val = txt.Text;
}

-Shinu.
0
Christophe
Top achievements
Rank 1
answered on 25 Nov 2011, 02:40 PM
Thank you for your answer but there is an exception (System.InvalidCastException) :

can't cast an object of type 'System.Web.UI.LiteralControl' to 'System.Web.UI.WebControls.TextBox'.

Regards,
0
Shinu
Top achievements
Rank 2
answered on 28 Nov 2011, 05:56 AM
Hello Christophe,

I suppose you want to access the controls in InsertItemTemplate. Here is the sample code.
C#:
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
{
    GridEditFormInsertItem item = (GridEditFormInsertItem)e.Item;
    RadTextBox txt = (RadTextBox)item.FindControl("txt");
    string val = txt.Text;
}

-Shinu.
Tags
Grid
Asked by
Christophe
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Christophe
Top achievements
Rank 1
Share this question
or