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

Update Label With Key Value From Grid Row Selection

4 Answers 281 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Daniel
Top achievements
Rank 1
Daniel asked on 14 Apr 2011, 11:56 PM
I'm trying to make a label control update to display the key value for the users row selection in a Radgrid.  For some reason I can't get this to work.  Data is populated by way of some Linq to Entities code in a separate class.  Can someone show me what I'm doing wrong?

Below is the relevant code from my aspx page and code behind.  

<form id="form1" runat="server">
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        <Scripts>
            <%--Needed for JavaScript IntelliSense in VS2010--%>
            <%--For VS2008 replace RadScriptManager with ScriptManager--%>
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
        </Scripts>
    </telerik:RadScriptManager>
    <script type="text/javascript">
        //Put your JavaScript code here.
    </script>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    </telerik:RadAjaxManager>
    <div>
 
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Height="654px"
            width="654px">
            <telerik:RadTabStrip ID="RadTabStrip1" runat="server"
            ontabclick="RadTabStrip1_TabClick" SelectedIndex="0" AutoPostBack="True"
            Skin="Vista">
                <Tabs>
                    <telerik:RadTab runat="server" Text="Pending" Selected="True">
                    </telerik:RadTab>
                    <telerik:RadTab runat="server" Text="In Storage">
                    </telerik:RadTab>
                    <telerik:RadTab runat="server" Text="Returned">
                    </telerik:RadTab>
                </Tabs>
            </telerik:RadTabStrip>
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
            <telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0" GridLines="None"
                Height="300px" Width="654px" OnItemCommand="RadGrid1_ItemCommand"
                AutoGenerateColumns="False">
                <ClientSettings EnablePostBackOnRowClick="True">
                    <Selecting AllowRowSelect="True" />
                    <Scrolling AllowScroll="True" />
                    <Resizing AllowColumnResize="True" />
                </ClientSettings>
                <MasterTableView Width="100%" DataKeyNames="Tag">
                    <CommandItemSettings ExportToPdfText="Export to PDF" />
                    <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
                        <HeaderStyle Width="20px" />
                    </RowIndicatorColumn>
                    <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
                        <HeaderStyle Width="20px" />
                    </ExpandCollapseColumn>
                    <Columns>
                        <telerik:GridBoundColumn DataField="Tag"
                            FilterControlAltText="Filter column column" HeaderText="Tag"
                            UniqueName="column">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn DataField="Name"
                            FilterControlAltText="Filter column1 column" HeaderText="Name"
                            UniqueName="column1">
                        </telerik:GridBoundColumn>
                        <telerik:GridDateTimeColumn DataField="Received"
                            FilterControlAltText="Filter column2 column" HeaderText="Received"
                            UniqueName="column2">
                        </telerik:GridDateTimeColumn>
                        <telerik:GridDateTimeColumn DataField="Shipped"
                            FilterControlAltText="Filter column3 column" HeaderText="Shipped"
                            UniqueName="column3">
                        </telerik:GridDateTimeColumn>
                    </Columns>
                    <EditFormSettings>
                        <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                        </EditColumn>
                    </EditFormSettings>
                </MasterTableView>
                <FilterMenu EnableImageSprites="False">
                </FilterMenu>
                <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
                </HeaderContextMenu>
            </telerik:RadGrid>
            <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
        </telerik:RadAjaxPanel>

public partial class Inventory : System.Web.UI.Page
{
            
    protected void Page_Load(object sender, EventArgs e)
    {
         
        string CurrentUserEmail = Membership.GetUser().Email;
 
        int CurrentUserId = Sample.Data_Access.UserViewModel.GetUserIdByEmail(CurrentUserEmail);
 
        Label1.Text = CurrentUserEmail;
 
        int StatusID;
 
        StatusID = RadTabStrip1.SelectedIndex;
 
        RadGrid1.DataSource = Sample.Data_Access.PackageViewModel.GetUserBoxesByStatus(CurrentUserId, StatusID);
        RadGrid1.DataBind();
                   
                                 
    }
     
        protected void RadTabStrip1_TabClick(object sender, RadTabStripEventArgs e)
        {
         
        string CurrentUserEmail = Membership.GetUser().Email;
 
        int CurrentUserId = Sample.Data_Access.UserViewModel.GetUserIdByEmail(CurrentUserEmail);
 
        Label1.Text = CurrentUserEmail;
 
        int StatusID;
 
        StatusID = RadTabStrip1.SelectedIndex;
 
        RadGrid1.DataSource = Sample.Data_Access.PackageViewModel.GetUserBoxesByStatus(CurrentUserId, StatusID);
        RadGrid1.DataBind();
 
        }
 
        protected void RadGrid1_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
        {
            Label3.Text = RadGrid1.SelectedItems[0].OwnerTableView.DataKeyValues[RadGrid1.SelectedItems[0].ItemIndex]["column"].ToString();
            //Label2.Text = RadGrid1.SelectedItems[0].OwnerTableView.DataKeyValues[RadGrid1.SelectedItems[0].ItemIndex]["tag"].ToString();
            //e.ToString() = Label3.Text;
        }
 
 
 
    //TextBox1.Text = grdCategory.SelectedItems[0].OwnerTableView.DataKeyValues[grdCategory.SelectedItems[0].ItemIndex]["category_id"].ToString();
 
               
 
}

4 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 18 Apr 2011, 07:25 AM
Hello,

You can try the following code snippet in ItemCommand event to get the DataKeyValue of selected row in Label control.

C#:
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
   {
       if (e.CommandName == "RowClick")
       {
               GridDataItem selectedRow=(GridDataItem)RadGrid1.SelectedItems[0];
               Label3.Text = selectedRow.GetDataKeyValue("Tag").ToString();
        }
   }

Thanks,
Princy.
0
Daniel
Top achievements
Rank 1
answered on 18 Apr 2011, 08:30 PM
Thanks Princy.  I tried what you suggested but it is still not working as expected.  The specific exception it is throwing is the following:

"Error: Sys.WebForms.PageRequestManagerServerErrorException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index"

Any ideas?
0
Princy
Top achievements
Rank 2
answered on 19 Apr 2011, 08:20 AM
Hello,

You can also try the same code in 'onselectedindexchanged' event of RadGrid like below.

ASPX:
<telerik:RadGrid runat="server" ID="RadGrid1"  onselectedindexchanged="RadGrid1_SelectedIndexChanged">

C#:
protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
   {
       GridDataItem selectedRow = (GridDataItem)RadGrid1.SelectedItems[0];
       Label1.Text = selectedRow.GetDataKeyValue("EmpId").ToString();
   }

Note:Ensure that EnablePostBackOnRowClick is true to fire this event..

Thanks,
Princy
0
Daniel
Top achievements
Rank 1
answered on 19 Apr 2011, 10:58 PM
I tried as you suggested but still receive the same "index was out of range" exception as described in my previous reply.  EnablePostBackOnRowClick is indeed set to True.
Tags
Grid
Asked by
Daniel
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Daniel
Top achievements
Rank 1
Share this question
or