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

InsertParameters Being Ignored

2 Answers 63 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Rick
Top achievements
Rank 1
Rick asked on 02 Aug 2012, 08:49 PM
  • I am using MS Visual Studio 2010 in a 3.5 environment.
  • I am using Microsoft Vista (32 bit)
  • The database is currently located on an SQL 2005 server.
  • I am using RadGrid & tools, version 2012.1.411.35
  • I am using both Chrome (18.0.1025.168) and Internet Explorer (8.0.7600.16385)
  • I am programming in VB.net

I have a radGrid with a nested details view.  I can edit the top and details hierarchy and I don't need to insert into the top level.  When I try to insert into the details level, it just doesn't do anything.  The screen blinks (reloads) and the record is not inserted.  The edit form stays open and still holds the values.

So I used the ItemCommand event and issue a data source insert command, but I'm not happy with that either.  The subitem is closed after inserting, plus it does not grab the parameter values.  If I hard code the values into the Insert Parameter it will work, but it will not pull the values from the InsertParameters.

I hope that makes sense.  To recap:

  • Edits work
  • Insert reloads page, fails to save.
  • Tried workaround using ItemCommand; Parameters are ignored-- blank record added.
  • Hard coding values in ItemCommand and issuing Insert on datasource works.



<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Don Beaty's Foreign Currency Tracker" Font-Bold="False" Font-Names="Calibri" Font-Size="XX-Large"></asp:Label>
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
        <telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0"
            Width="1080px"
            DataSourceID="SqlDataSource1"
            GridLines="None"
            AllowAutomaticInserts="True"
            AllowAutomaticUpdates="True"
            AllowAutomaticDeletes="True"
            BorderColor="Gray"
            BorderStyle="Inset" Skin="Office2010Silver" >
             
            <MasterTableView AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
                commanditemdisplay="None"
                allowpaging="True" 
                EditMode="InPlace"
                PageSize="30"
                Name="Currency"
                showgroupfooter="True" BorderColor="#E0E0E0" BorderStyle="Solid"
                BorderWidth="1px" GridLines="Vertical" DataKeyNames="Currency_CountryCode">
 
                <DetailTables>
                    <telerik:GridTableView runat="server"  DataKeyNames="Currency_ID"
                        EditMode="InPlace" CommandItemDisplay="Bottom" Width="100%"
                        DataSourceID="SqlDataSource2" AutoGenerateColumns="False"
                        ShowGroupFooter="True" AllowAutomaticUpdates="False">
                         
                        <ParentTableRelation>
                            <telerik:GridRelationFields DetailKeyField="Currency_CountryCode" MasterKeyField="Currency_CountryCode" />
                        </ParentTableRelation>
 
                        <CommandItemSettings ExportToPdfText="Export to PDF" />
                        <RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column"></RowIndicatorColumn>
                        <ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn>
 
                        <Columns>
                            <telerik:GridTemplateColumn
                                FilterControlAltText="Filter EditCommandColumn column"
                                Groupable="False"
                                UniqueName="EditCommandColumn">
 
                                <ItemTemplate>
                                    <asp:LinkButton ID="lbuEdit" runat="server" CausesValidation="false" CommandName="Edit" Text="Edit"></asp:LinkButton>
                                </ItemTemplate>
 
                                <EditItemTemplate>
                                    <asp:LinkButton ID="lbuUpdate" runat="server" CommandName="Update" Text="Update"></asp:LinkButton
                                    <asp:LinkButton ID="lbuCancelUpdate" runat="server" CausesValidation="false" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                                </EditItemTemplate>
 
                                <InsertItemTemplate>
                                    <asp:LinkButton ID="lbuSaveInsert" runat="server" CommandName="Insert" Text="Save"></asp:LinkButton>
                                    <asp:LinkButton ID="lbuCancelInsert" runat="server" CausesValidation="false" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                                </InsertItemTemplate>
 
                            </telerik:GridTemplateColumn>
                            <telerik:GridTemplateColumn DataField="CurrencyTarget_ForeignDenomination"
                                DataType="System.Int32"
                                FilterControlAltText="Filter CurrencyTarget_ForeignDenomination column"
                                HeaderText="Foreign<br/>Currency<br/>Denomination"
                                SortExpression="CurrencyTarget_ForeignDenomination"
                                UniqueName="CurrencyTarget_ForeignDenomination">
                                <InsertItemTemplate>
                                    <asp:TextBox ID="CurrencyTarget_ForeignDenomination" runat="server"
                                        Text='<%# Bind("CurrencyTarget_ForeignDenomination") %>'></asp:TextBox>
                                </InsertItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="CurrencyTarget_ForeignDenominationLabel" runat="server"
                                        Text='<%# Eval("CurrencyTarget_ForeignDenomination") %>'></asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:Label ID="CurrencyTarget_ForeignDenominationLabel2" runat="server"
                                        Text='<%# Eval("CurrencyTarget_ForeignDenomination") %>'></asp:Label>
                                </EditItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridBoundColumn DataField="USDEquivalent"
                                HeaderText="US<br/>Dollar<br/>Equivalent" SortExpression="USDEquivalent" UniqueName="USDEquivalent" FilterControlAltText="Filter USDEquivalent column"
                                DataType="System.Decimal" DataFormatString="${0:#}"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Right" BorderColor="Black"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn
                                DataField="CurrencyTarget_FCNeeded"
                                HeaderText="Quantity<br/>Needed For<br/>1 '500' Envelope" SortExpression="CurrencyTarget_FCNeeded" UniqueName="CurrencyTarget_FCNeeded" FilterControlAltText="Filter CurrencyTarget_FCNeeded column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum">
                                <ItemStyle HorizontalAlign="Center" BackColor="#CCFFCC" BorderColor="Green" CssClass="maximize"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="TotalForeignCurrency"
                                HeaderText="Total<br/>Foreign<br/>Currency" SortExpression="TotalForeignCurrency" UniqueName="TotalForeignCurrency" FilterControlAltText="Filter TotalForeignCurrency column"
                                DataType="System.Int32" DataFormatString="{0:#}"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Right" BackColor="#CCFFCC" BorderColor="Green"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="USDValue"
                                HeaderText="US<br/>Dollar<br/>Value" SortExpression="USDValue" UniqueName="USDValue" FilterControlAltText="Filter USDValue column"
                                DataType="System.Decimal" DataFormatString="${0:###,##0.00}" Aggregate="Sum"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Right" BackColor="#CCFFCC" BorderColor="Green"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="TotalFor500Envelopes"
                                HeaderText="Total<br/>For '500'<br/>Envelopes" SortExpression="TotalFor500Envelopes" UniqueName="TotalFor500Envelopes" FilterControlAltText="Filter TotalFor500Envelopes column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Center" BackColor="#CCFFCC" BorderColor="Green"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="CurrencyTarget_FCNeeded_100"
                                HeaderText="Quantity<br/>Needed For<br/>1 '100' Envelope" SortExpression="CurrencyTarget_FCNeeded_100" UniqueName="CurrencyTarget_FCNeeded_100" FilterControlAltText="Filter CurrencyTarget_FCNeeded_100 column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum">
                                <ItemStyle HorizontalAlign="Center" BackColor="#CCCCFF" BorderColor="#6666FF" CssClass="maximize"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="USDValue_100"
                                HeaderText="US<br/>Dollar<br/>Value" SortExpression="USDValue_100" UniqueName="USDValue_100" FilterControlAltText="Filter USDValue_100 column"
                                DataType="System.Decimal" DataFormatString="${0:###,##0.00}" Aggregate="Sum"
                                ReadOnly="True">
                                <ItemStyle HorizontalAlign="Center" BackColor="#CCCCFF" BorderColor="#6666FF"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="TotalFor100Envelopes"
                                HeaderText="Total<br/>For '100'<br/>Envelopes" SortExpression="TotalFor100Envelopes" UniqueName="TotalFor100Envelopes" FilterControlAltText="Filter TotalFor100Envelopes column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Center" BackColor="#CCCCFF" BorderColor="#6666FF"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="TotalForAllEnvelopes"
                                HeaderText="Total<br/>All<br/>Envelopes" SortExpression="TotalForAllEnvelopes" UniqueName="TotalForAllEnvelopes" FilterControlAltText="Filter TotalForAllEnvelopes column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Center" BackColor="#FFCCCC" BorderColor="#FF6666"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="CurrencyTarget_NativeCurrent"
                                HeaderText="Total<br/>On<br/>Hand" SortExpression="CurrencyTarget_NativeCurrent" UniqueName="CurrencyTarget_NativeCurrent" FilterControlAltText="Filter CurrencyTarget_NativeCurrent column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum">
                                <ItemStyle HorizontalAlign="Center" BackColor="#FFCCCC" BorderColor="#FF6666" CssClass="maximize"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="ExcessCurrency"
                                HeaderText="Excess" SortExpression="ExcessCurrency" UniqueName="ExcessCurrency" FilterControlAltText="Filter ExcessCurrency column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum"
                                ReadOnly="True" >
                                <HeaderStyle VerticalAlign="Bottom"></HeaderStyle>
                                <ItemStyle HorizontalAlign="Center" BackColor="#FFCCCC" BorderColor="#FF6666"></ItemStyle>
                            </telerik:GridBoundColumn>
                            <telerik:GridBoundColumn DataField="OrderQuantity"
                                HeaderText="Quantity<br/>To<br/>Order" SortExpression="OrderQuantity" UniqueName="OrderQuantity" FilterControlAltText="Filter OrderQuantity column"
                                DataType="System.Int32" DataFormatString="{0:#}" Aggregate="Sum"
                                ReadOnly="True" >
                                <ItemStyle HorizontalAlign="Center" BackColor="#FFCCCC" BorderColor="#FF6666" ForeColor="Crimson" Font-Bold="true"></ItemStyle>
                            </telerik:GridBoundColumn>
                        </Columns>
 
                        <GroupByExpressions>
                            <telerik:GridGroupByExpression>
                                <SelectFields>
                                    <telerik:GridGroupByField FieldAlias="CountryCode"  FieldName="Currency_CountryCode" HeaderText="Country Code"  />
                                </SelectFields>
                                <GroupByFields>
                                    <telerik:GridGroupByField FieldAlias="Currency_CountryCode"  FieldName="Currency_CountryCode" />
                                </GroupByFields>
                         
                            </telerik:GridGroupByExpression>
                        </GroupByExpressions>
                         <FooterStyle Font-Bold="true" />
                        <EditFormSettings>
                            <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                            </EditColumn>
                        </EditFormSettings>
                    </telerik:GridTableView>
                </DetailTables>
 
                <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
                <RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column"></RowIndicatorColumn>
                <ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn>
 
                <Columns>
                            <telerik:GridTemplateColumn
                                FilterControlAltText="Filter EditCommandColumn column"
                                Groupable="False"
                                UniqueName="EditCommandColumn">
 
                                <ItemTemplate>
                                    <asp:LinkButton ID="lbuEditP" runat="server" CausesValidation="false" CommandName="Edit" Text="Edit"></asp:LinkButton>
                                </ItemTemplate>
 
                                <EditItemTemplate>
                                    <asp:LinkButton ID="lbuUpdateP" runat="server" CommandName="Update" Text="Update"></asp:LinkButton
                                    <asp:LinkButton ID="lbuCancelUpdateP" runat="server" CausesValidation="false" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                                </EditItemTemplate>
 
                                <InsertItemTemplate>
                                    <asp:LinkButton ID="lbuSaveInsertP" runat="server" CommandName="Insert" Text="Save"></asp:LinkButton>
                                    <asp:LinkButton ID="lbuCancelInsertP" runat="server" CausesValidation="false" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                                </InsertItemTemplate>
 
                            </telerik:GridTemplateColumn>
                    <telerik:GridBoundColumn DataField="Currency_CountryDesc"
                        FilterControlAltText="Filter Currency_CountryDesc column"
                        HeaderText="Currency" SortExpression="Currency_CountryDesc"
                        UniqueName="Currency_CountryDesc"
                        ReadOnly="True">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="ExchangeRate"
                        DataType="System.Decimal"
                        FilterControlAltText="Filter Currency_Conversion column"
                        HeaderText="Exchange Rate" SortExpression="ExchangeRate"
                        ItemStyle-HorizontalAlign="Right"  HeaderStyle-HorizontalAlign="Center"
                        UniqueName="ExchangeRate"
                        ReadOnly="True">
                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Right"></ItemStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="Currency_EnvelopeCount500"
                        DataType="System.Int16"
                        FilterControlAltText="Filter Currency_EnvelopeCount500 column"
                        HeaderText="500 Env. Count"
                        SortExpression="Currency_EnvelopeCount500"
                        UniqueName="Currency_EnvelopeCount500">
                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Center" CssClass="maximize"></ItemStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="Currency_EnvelopeCount100"
                        DataType="System.Int16"
                        FilterControlAltText="Filter Currency_EnvelopeCount100 column"
                        HeaderText="100 Env. Count"
                        SortExpression="Currency_EnvelopeCount100"
                        UniqueName="Currency_EnvelopeCount100">
                        <HeaderStyle HorizontalAlign="Center" CssClass="maximize"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Center" CssClass="maximize"></ItemStyle>
                    </telerik:GridBoundColumn>
                    <telerik:GridCheckBoxColumn DataField="Currency_BriefcaseUsed"
                        DataType="System.Boolean"
                        FilterControlAltText="Filter Currency_BriefcaseUsed column"
                        HeaderText="Flag Briefcase" SortExpression="Currency_BriefcaseUsed"
                        UniqueName="Currency_BriefcaseUsed">
                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </telerik:GridCheckBoxColumn>
                    <telerik:GridCheckBoxColumn DataField="Currency_HomeOfficeUsed"
                        DataType="System.Boolean"
                        FilterControlAltText="Filter Currency_HomeOfficeUsed column"
                        HeaderText="Flag Home" SortExpression="Currency_HomeOfficeUsed"
                        UniqueName="Currency_HomeOfficeUsed">
                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </telerik:GridCheckBoxColumn>
                    <telerik:GridCheckBoxColumn DataField="Currency_OneHundUsed"
                        DataType="System.Boolean"
                        FilterControlAltText="Filter Currency_OneHundUsed column"
                        HeaderText="Flag 100" SortExpression="Currency_OneHundUsed"
                        UniqueName="Currency_OneHundUsed">
                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
                    </telerik:GridCheckBoxColumn>
                </Columns>
 
                <EditFormSettings>
                    <EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
                </EditFormSettings>
                <PagerStyle AlwaysVisible="True"  />
                <HeaderStyle Font-Bold="True" />
            </MasterTableView>
 
            <FilterMenu EnableImageSprites="False"></FilterMenu>
        </telerik:RadGrid>
     
    </div>
 
 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
        ConnectionString="<%$ ConnectionStrings:DonPlannerCS %>"
        SelectCommand="SELECT Currency_CountryCode, Currency_CountryDesc, Currency_EnvelopeCount500, Currency_EnvelopeCount100, 1 / Currency_Conversion AS ExchangeRate, Currency_LastUpdated, Currency_BriefcaseUsed, Currency_HomeOfficeUsed, Currency_OneHundUsed, CASE LEN(CurrencyTarget_CountryCode) WHEN 3 THEN 0 ELSE 1 END AS Existing, CurrencyTarget_CountryCode
                        FROM Currency_LatestConversions_TBL LEFT OUTER JOIN Currency_CurrentlyTracked ON Currency_LatestConversions_TBL.Currency_CountryCode = Currency_CurrentlyTracked.CurrencyTarget_CountryCode
                        ORDER BY Existing, Currency_LatestConversions_TBL.Currency_CountryDesc"
        UpdateCommand="UPDATE [Currency_LatestConversions_TBL]
                        SET [Currency_EnvelopeCount500] = @Currency_EnvelopeCount500, [Currency_EnvelopeCount100] = @Currency_EnvelopeCount100, [Currency_BriefcaseUsed] = @Currency_BriefcaseUsed, [Currency_HomeOfficeUsed] = @Currency_HomeOfficeUsed, [Currency_OneHundUsed] = @Currency_OneHundUsed
                        WHERE [Currency_CountryCode]=@Currency_CountryCode">
 
        <UpdateParameters>
            <asp:Parameter Name="Currency_CountryCode" />
        </UpdateParameters>
 
    </asp:SqlDataSource>
 
 
    <asp:SqlDataSource ID="SqlDataSource2" runat="server"
        ConnectionString="<%$ ConnectionStrings:DonPlannerCS %>"
        SelectCommand="SELECT Currency_ID, Currency_CountryCode, Currency_CountryDesc, CurrencyTarget_ForeignDenomination, USDEquivalent, CurrencyTarget_FCNeeded, TotalForeignCurrency, ExchangeRate, USDValue, TotalFor500Envelopes, CurrencyTarget_FCNeeded_100, TotalFor100Envelopes, USDValue_100, TotalForAllEnvelopes, CurrencyTarget_NativeCurrent, CASE sign(QtyToOrder) WHEN - 1 THEN 0 ELSE QtyToOrder END AS OrderQuantity, CASE sign(Excess) WHEN - 1 THEN 0 ELSE Excess END AS ExcessCurrency
                        FROM Currency_Grid WHERE([Currency_CountryCode]=@Currency_CountryCode)
                        ORDER BY CurrencyTarget_ForeignDenomination"
        UpdateCommand="UPDATE [Currency_TargetAmounts_TBL]
                        SET [CurrencyTarget_FCNeeded] = @CurrencyTarget_FCNeeded, [CurrencyTarget_FCNeeded_100] = @CurrencyTarget_FCNeeded_100, [CurrencyTarget_NativeCurrent] = @CurrencyTarget_NativeCurrent
                        WHERE [Currency_ID] = @Currency_ID"
         
        InsertCommand="INSERT INTO Currency_TargetAmounts_TBL(Currency_Location, CurrencyTarget_CountryCode, CurrencyTarget_ForeignDenomination, CurrencyTarget_FCNeeded, CurrencyTarget_FCNeeded_100, CurrencyTarget_NativeCurrent) SELECT 'AccounTEST' AS Expr1, 'CAD' AS Expr2, @CurrencyTarget_ForeignDenomination AS Expr3, @CurrencyTarget_FCNeeded AS Expr4, @CurrencyTarget_FCNeeded_100 AS Expr5, @CurrencyTarget_NativeCurrent AS Expr6" >
        <SelectParameters>
            <asp:SessionParameter DefaultValue="XXX" Name="Currency_CountryCode" SessionField="@Currency_CountryCode" Type="String" />
        </SelectParameters>
 
        <UpdateParameters>
            <asp:Parameter Name="CurrencyTarget_FCNeeded" />
            <asp:Parameter Name="CurrencyTarget_FCNeeded_100" />
            <asp:Parameter Name="CurrencyTarget_NativeCurrent" />
            <asp:Parameter Name="Currency_ID" />
        </UpdateParameters>
 
        <InsertParameters>
            <asp:Parameter Type="Int32" Name="CurrencyTarget_ForeignDenomination" DefaultValue="0" />
            <asp:Parameter Type="Int32" Name="CurrencyTarget_FCNeeded"  DefaultValue="0" />
            <asp:Parameter Type="Int32" Name="CurrencyTarget_FCNeeded_100" DefaultValue="0" />
            <asp:Parameter Type="Int32" Name="CurrencyTarget_NativeCurrent" DefaultValue="0" />
        </InsertParameters>
 
    </asp:SqlDataSource>
 
    </form>
</body>


2 Answers, 1 is accepted

Sort by
0
Rick
Top achievements
Rank 1
answered on 03 Aug 2012, 03:26 PM
I decided to replace my Insert SQL with garbage and it had no affect.  No errors...  I felt as though it was never being called, so I replaced my GridTemplateColumn for the EditCommand column with the GridEditCommandColumn.

Suddenly my Insert works again.

However, I found that my Update no longer works and even when I switch back to the template it still doesn't work.  The SQL is solid.  If I can't figure it out, I'll cretae a new post.
0
Rick
Top achievements
Rank 1
answered on 03 Aug 2012, 07:42 PM
Okay, the update failed because I had AutomaticUpdates disabled.  It was something I tried to do to fix the Inserts problem.  I thought I had enabled it again and even looked for it but didn't find it.

New problem coming up soon.

Tags
Grid
Asked by
Rick
Top achievements
Rank 1
Answers by
Rick
Top achievements
Rank 1
Share this question
or