简体   繁体   中英

Value not reflected on change in ItemCommand within RadGrid

I am having a RadGrid which contains MasterTableView and a DetailView. I am trying to change the value of Sub Total present in MasterTableView on deleting DetailView Row. I am able to get the control in Parent Table and am able to change the value. However value is not reflecting. I tried multiple options eg Rebind() method as well as e.Item.OwnerTableView.DataBind(). Here is what my ItemCommand function looks like

    Private Sub dbgView_ItemCommand(ByVal source As System.Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles dbgView.ItemCommand
            If e.CommandName.ToLower.Equals(GlobalConstants.Key_Delete_CommandName) And e.Item.OwnerTableView.Name = "Tax" Then
                   dataItem = DirectCast(e.Item.OwnerTableView.ParentItem, GridDataItem)
                   Dim numSubTotal As NumericBox = dataItem.FindControl("numAmount")
                   numSubTotal.Text = "New Value"
                   ' e.Item.OwnerTableView.DataBind()
            End If

Can someone help me understand why the new value is not reflecting? Here is how my grid looks like

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
                <AjaxSettings>
                    <telerik:AjaxSetting AjaxControlID="dbgView">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="dbgView"></telerik:AjaxUpdatedControl>
                           </telerik:AjaxUpdatedControl>
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                </AjaxSettings>
            </telerik:RadAjaxManager>
            <telerik:RadGrid ID="dbgView" runat="server" AutoGenerateColumns="False" AllowPaging="True"
                PageSize="5" GridLines="Horizontal" Skin="Office2010Blue" Style="border: 0 none"
                AllowAutomaticInserts="True">
                <PagerStyle Mode="NumericPages"></PagerStyle>
                <MasterTableView Width="100%" CommandItemDisplay="Top" Name="GLLine" AllowNaturalSort="False"
                    PageSize="10" DataKeyNames="Key" NoDetailRecordsText="No records to display.">
                    <DetailTables> .....

UPDATE On doing further digging i got to know that i need to Rebind the grid post my operation is performed. However while i am performing Rebind, i am getting exception

[HttpException (0x80004005): DataBinding: 'System.Collections.DictionaryEntry' does not contain a property with the name 'TaxID'.] System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +384 Telerik.Web.UI.GridTableView.PopulateDataKey(Object dataItem, DataKey key, String name) +457 Telerik.Web.UI.GridTableView.PopulateDataKeys(Object dataItem) +241

However i don't get this issue during my normal operations. I am able to find out this datakey otherwise for all normal operations. What might be going wrong?

Update As per below link from Telerik, master table would not be updated when a detail table row is deleted.

http://www.telerik.com/forums/master-grid-not-rebinding-after-detail-table-delete-command

I am trying Rebind exactly mentioned as in this website. However i am getting exception for DataKeyValues as mentioned above. Any pointers would really help.

Issue has been resolved !! I got lot of links which directed me to perform Rebind() operation. However that started creating multiple other issues. This issue was handled by writing a Javascript method handling onclick event of GridButtonColumn by Passing control ids of field from DetailView and Master Table View.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM