hi all
I have a hierachical rad grid in my page
this grid has up to 3 level and each row has a template field that contains rad numeric text box for "grade" and 1 column for "max grade"
user must enter grade for each child in last level. then in client side, I must check that grade:
1)this grade can't upper than max_grade
2)sum of grade of childes must be calculate for grade of their parent
this is my grid:
and in client side i write this function:
but it has error on finde brothers row.
how can I do that easily?
how can I find brothers of a row and calculate sum of their grade?
I have a hierachical rad grid in my page
this grid has up to 3 level and each row has a template field that contains rad numeric text box for "grade" and 1 column for "max grade"
user must enter grade for each child in last level. then in client side, I must check that grade:
1)this grade can't upper than max_grade
2)sum of grade of childes must be calculate for grade of their parent
this is my grid:
<telerik:RadGrid ID="gv_cheque_list" runat="server" GridLines="None" Width="100%" AllowSorting="True" AutoGenerateColumns="False" ShowFooter="True" OnDetailTableDataBind="gv_cheque_list_DetailTableDataBind" OnItemCommand="gv_cheque_list_ItemCommand" Skin="Web20" OnItemDataBound="gv_cheque_list_ItemDataBound"> <AlternatingItemStyle BackColor="#a7bcdb" /> <MasterTableView AllowSorting="True" DataKeyNames="assessment_parameter_id" Dir="RTL" Font-Names="Tahoma" HeaderStyle-HorizontalAlign="Center" HorizontalAlign="Center" HierarchyLoadMode="Client" ItemStyle-HorizontalAlign="Center" HeaderStyle-BackColor="#99CCFF" > <AlternatingItemStyle BackColor="#a7bcdb" /> <DetailTables> <telerik:GridTableView runat="server" Name="ChequeList" DataKeyNames="assessment_parameter_id" Font-Names="Tahoma" HierarchyLoadMode="Client" Dir="RTL" NoDetailRecordsText="it hasn't child" > <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="parent_id" MasterKeyField="assessment_parameter_id" /> </ParentTableRelation> <AlternatingItemStyle BackColor="#a7bcdb" /> <HeaderStyle HorizontalAlign="Center" CssClass="detailTableLevel1" /> <ExpandCollapseColumn> </ExpandCollapseColumn> <Columns> <telerik:GridTemplateColumn HeaderText="cheque_list_id" UniqueName="cheque_list_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_cheque_list_id" runat="server" Text='<%# Bind("cheque_list_id") %>' /> </ItemTemplate> <HeaderStyle Width="50px" /> <ItemStyle Width="50px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="assessment_parameter_id" UniqueName="assessment_parameter_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_assessment_parameter_id" runat="server" Text='<%# Bind("assessment_parameter_id") %>' /> </ItemTemplate> <HeaderStyle Width="50px" /> <ItemStyle Width="50px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="parent_id" UniqueName="parent_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_parent_id" runat="server" Text='<%# Bind("parent_id") %>' /> </ItemTemplate> <HeaderStyle Width="50px" /> <ItemStyle Width="50px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="child_count" UniqueName="child_count" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_child_count" runat="server" Text='<%# Bind("child_count") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="type" UniqueName="type" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_type" runat="server" Text='<%# Bind("type") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="assessment_parameter_code" EmptyDataText="----" HeaderText="assessment_parameter_code" Resizable="true" UniqueName="assessment_parameter_code"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="parameter_name" EmptyDataText="----" HeaderText="parameter_name" Resizable="true" UniqueName="parameter_name"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="max_grade" EmptyDataText="----" HeaderText="max_grade" Resizable="true" UniqueName="max_grade"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="grade" UniqueName="grade"> <ItemTemplate> <telerik:RadNumericTextBox ID="txt_grade" runat="server" Text='<%# Bind("grade") %>'> <ClientEvents OnValueChanged="txt_grade_value_changed" /> </telerik:RadNumericTextBox> <asp:HiddenField ID="hd_type" runat="server" Value='<%# Bind("type") %>' /> <asp:HiddenField ID="hd_parent_id" runat="server" Value='<%# Bind("parent_id") %>' /> <asp:HiddenField ID="hd_ass_id" runat="server" Value='<%# Bind("assessment_parameter_id") %>' /> <asp:HiddenField ID="hd_child_count" runat="server" Value='<%# Bind("child_count") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <DetailTables> <telerik:GridTableView runat="server" Name="ChequeListDetail" Dir="RTL" DataKeyNames="assessment_parameter_id" HierarchyLoadMode="Client" NoDetailRecordsText="it hasn't child" Font-Names="Tahoma"> <ParentTableRelation> <telerik:GridRelationFields DetailKeyField="parent_id" MasterKeyField="assessment_parameter_id" /> </ParentTableRelation> <HeaderStyle HorizontalAlign="Center" CssClass="detailTableLevel2" /> <Columns> <telerik:GridTemplateColumn HeaderText="cheque_list_id" UniqueName="cheque_list_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_cheque_list_id" runat="server" Text='<%# Bind("cheque_list_id") %>' /> </ItemTemplate> <HeaderStyle Width="50px" /> <ItemStyle Width="50px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="assessment_parameter_id" UniqueName="assessment_parameter_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_assessment_parameter_id" runat="server" Text='<%# Bind("assessment_parameter_id") %>' /> </ItemTemplate> <HeaderStyle Width="50px" /> <ItemStyle Width="50px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="parent_id" UniqueName="parent_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_parent_id" runat="server" Text='<%# Bind("parent_id") %>' /> </ItemTemplate> <HeaderStyle Width="50px" /> <ItemStyle Width="50px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="child_count" UniqueName="child_count" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_child_count" runat="server" Text='<%# Bind("child_count") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="type" UniqueName="type" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_type" runat="server" Text='<%# Bind("type") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="assessment_parameter_code" EmptyDataText="----" HeaderText="assessment_parameter_code" Resizable="true" UniqueName="assessment_parameter_code"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="parameter_name" EmptyDataText="----" HeaderText="parameter_name" Resizable="true" UniqueName="parameter_name"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="max_grade" EmptyDataText="----" HeaderText="max_grade" Resizable="true" UniqueName="max_grade"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="grade" UniqueName="grade"> <ItemTemplate> <telerik:RadNumericTextBox ID="txt_grade" runat="server" Text='<%# Bind("grade") %>'> <ClientEvents OnValueChanged="txt_grade_value_changed" /> </telerik:RadNumericTextBox> <asp:HiddenField ID="hd_type" runat="server" Value='<%# Bind("type") %>' /> <asp:HiddenField ID="hd_parent_id" runat="server" Value='<%# Bind("parent_id") %>' /> <asp:HiddenField ID="hd_ass_id" runat="server" Value='<%# Bind("assessment_parameter_id") %>' /> <asp:HiddenField ID="hd_child_count" runat="server" Value='<%# Bind("child_count") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </telerik:GridTableView> </DetailTables> </telerik:GridTableView> </DetailTables> <NoRecordsTemplate> </NoRecordsTemplate> <CommandItemSettings ShowAddNewRecordButton="false" /> <ExpandCollapseColumn Visible="True" ExpandImageUrl="Images/plus.png" CollapseImageUrl="Images/minus.png" ButtonType="ImageButton"> </ExpandCollapseColumn> <Columns> <telerik:GridTemplateColumn HeaderText="cheque_list_id" UniqueName="cheque_list_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_cheque_list_id" runat="server" Text='<%# Bind("cheque_list_id") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="parent_id" UniqueName="parent_id" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_parent_id" runat="server" Text='<%# Bind("parent_id") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="child_count" UniqueName="child_count" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_child_count" runat="server" Text='<%# Bind("child_count") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="type" UniqueName="type" Visible="false"> <ItemTemplate> <asp:Label ID="lbl_type" runat="server" Text='<%# Bind("type") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn DataField="assessment_parameter_code" EmptyDataText="----" HeaderText="assessment_parameter_code" Resizable="true" UniqueName="assessment_parameter_code"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="parameter_name" EmptyDataText="----" HeaderText="parameter_name" Resizable="true" UniqueName="parameter_name"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="max_grade" EmptyDataText="----" HeaderText="max_grade" Resizable="true" UniqueName="max_grade"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="grade" UniqueName="grade"> <ItemTemplate> <telerik:RadNumericTextBox ID="txt_grade" runat="server" Text='<%# Bind("grade") %>'> </telerik:RadNumericTextBox> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <ItemStyle HorizontalAlign="Center" /> <HeaderStyle HorizontalAlign="Center" /> </MasterTableView> <ClientSettings EnableRowHoverStyle="true" EnablePostBackOnRowClick="true"> <Resizing AllowColumnResize="True" ResizeGridOnColumnResize="false" /> </ClientSettings> </telerik:RadGrid>and in client side i write this function:
<script language="JavaScript1.2" type="text/javascript"> function txt_grade_value_changed(sender, args) { debugger; var newValue = args.get_newValue(); var oldValue = args.get_oldValue(); // var d_i = sender.get_parent().get_dataItems(); var curr_tr = $('input[id="' + sender._clientID + '"]').closest("tr"); var father_tr = $('input[id="' + sender._clientID + '"]').closest("table").closest("tr").prev(); var father_max_grade = father_tr[0].cells[3].innerText; if (newValue > curr_max_grade) alert('You can continueenter thistory grade'); var current_grade = 0; try { current_grade = $(curr_tr[0].cells[3].children[0]).closest("span")[0].children[0].value; var parent_id = curr_tr[0].cells[3].children[2].value; var curr_id = curr_tr[0].cells[3].children[3].value; var curr_max_grade = curr_tr[0].cells[2].innerText; } catch (Error) { current_grade = $(curr_tr[0].cells[4].children[0]).closest("span")[0].children[0].value; var parent_id = curr_tr[0].cells[4].children[2].value; var curr_id = curr_tr[0].cells[4].children[3].value; var curr_max_grade = curr_tr[0].cells[3].innerText; } var father_grade_txt = $(father_tr[0].cells[4].children[0]).closest("span")[0].children[0]; var child_row_array = new Array(10); var i = 0; var curr_tr2 = curr_tr; child_row_array[i] = curr_tr; i++; try { do { if (curr_tr2[0] != undefined && curr_tr2[0].cells[3].children[2].value != undefined && curr_tr2[0].cells[3].children[2].value == parent_id && curr_tr2[0].cells[3].children[3].value != curr_id) { child_row_array[i] = curr_tr2; i++; } curr_tr2 = curr_tr2.next('tr'); } while (curr_tr2 && curr_tr2[0] && curr_tr2[0].cells[3].children[2].value != undefined && curr_tr2[0].cells[3].children[3].value != curr_id) curr_tr2 = curr_tr; do { if (curr_tr2[0] != undefined && curr_tr2[0].cells[3].children[2].value != undefined && curr_tr2[0].cells[3].children[2].value == parent_id && curr_tr2[0].cells[3].children[3].value != curr_id) { child_row_array[i] = curr_tr2; i++; } curr_tr2 = curr_tr2.prev('tr'); } while (curr_tr2 && curr_tr2[0] && curr_tr2[0].cells[3].children[2].value != undefined && curr_tr2[0].cells[3].children[3].value != curr_id) } catch (Error) { try { do { if (curr_tr2[0] != undefined && curr_tr2[0].cells[4].children[2].value != undefined && curr_tr2[0].cells[4].children[2].value == parent_id && curr_tr2[0].cells[4].children[3].value != curr_id) { child_row_array[i] = curr_tr2; i++; } curr_tr2 = curr_tr2.next('tr'); } while (curr_tr2 && curr_tr2[0] && curr_tr2[0].cells[4].children[2].value != undefined && curr_tr2[0].cells[4].children[3].value != curr_id) } catch (Error) { } curr_tr2 = curr_tr; try { do { if (curr_tr2[0] != undefined && curr_tr2[0].cells[4].children[2].value != undefined && curr_tr2[0].cells[4].children[2].value == parent_id && curr_tr2[0].cells[4].children[3].value != curr_id) { child_row_array[i] = curr_tr2; i++; } curr_tr2 = curr_tr2.prev('tr'); } while (curr_tr2 && curr_tr2[0] && curr_tr2[0].cells[4].children[2].value != undefined && curr_tr2[0].cells[4].children[3].value != curr_id) } catch (Error) { } } var array_lenght = i; var count = 0; var sum = 0.00; for (var i = 0; i < array_lenght; i++) { try { if (child_row_array[i][0].cells[3].firstChild.childNodes[0].value != "") sum = sum + parseFloat(child_row_array[i][0].cells[3].firstChild.childNodes[0].value); } catch (Error) { if (child_row_array[i][0].cells[4].firstChild.childNodes[0].value != "") sum = sum + parseFloat(child_row_array[i][0].cells[4].firstChild.childNodes[0].value); } } father_grade_txt.value = sum; } </script>but it has error on finde brothers row.
how can I do that easily?
how can I find brothers of a row and calculate sum of their grade?