【问题标题】:How to ajaxify controls in Edit Form of RadGrid如何在 RadGrid 的编辑表单中 ajaxify 控件
【发布时间】:2016-12-16 04:28:00
【问题描述】:

我尝试使用 (RadAjaxManager or RadAjaxManagerProxy) 在 Edit FormEdit Form 中 ajaxify RadNumericTextBoxs,但我失败了。

我想做的就是: 当文本更改为 (txt_CashAndEquivalents,txt_ShortTermInvestments) 时,将两个文本框的值相加,并将结果设置为 txt_OneTotal,而无需完整回发。


<EditFormSettings EditFormType="Template">
                        <EditColumn UniqueName="EditCommandColumn1" FilterControlAltText="Filter EditCommandColumn1 column">
                        </EditColumn>
                        <FormTemplate>
                            <div class="FinancePositioncontainers">
                                <div class="FinancePosition-container" id="decorationZone">
                                    <h4>Finance</h4>
                                    <fieldset>
                                        <legend>List</legend>
                                        <div class="formRow" style="padding-right: 10px; padding-left: 10px;">
                                            <h5>Bal</h5>
                                            <label for="txt_CashAndEquivalents">bal1:</label>
                                            <telerik:RadNumericTextBox ID="txt_CashAndEquivalents" runat="server" Text='<%# Eval("CashAndEquivalents")%>' Type="Number" DataType="System.Decimal" Width="160" NumberFormat-GroupSizes="3" AutoPostBack="True" TabIndex="1" OnTextChanged="txt_CashAndEquivalents_TextChanged"></telerik:RadNumericTextBox>

                                            <div>
                                                &nbsp;
                                            </div>
                                            <label for="txt_ShortTermInvestments">bal2:</label>
                                            <telerik:RadNumericTextBox ID="txt_ShortTermInvestments" runat="server" Text='<%# Eval("ShortTermInvestments")%>' Type="Number" DataType="System.Decimal" Width="160" NumberFormat-GroupSizes="3" TabIndex="2" AutoPostBack="True" OnTextChanged="txt_CashAndEquivalents_TextChanged"></telerik:RadNumericTextBox>

                                            <div>
                                                &nbsp;
                                            </div>

                                            <hr />
                                            <label for="txt_OneTotal">total  :</label>
                                            <telerik:RadNumericTextBox ID="txt_OneTotal" runat="server" ReadOnly="true" Type="Number" DataType="System.Decimal" Width="160" NumberFormat-GroupSizes="3"></telerik:RadNumericTextBox>

                                            <div>
                                                &nbsp;
                                            </div>
                                        </div>

                                    <asp:LinkButton ID="btnUpdate" runat="server" CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
                                        ValidationGroup="Main" CssClass="btn btn-primary btn-xs white_cr"><span class="glyphicon glyphicon-floppy-disk"></span> <%# (Container is GridEditFormInsertItem) ? "Uppdate" %>
                                    </asp:LinkButton>&nbsp;
                                        <asp:LinkButton ID="btnCancel" runat="server" CausesValidation="False" CommandName="Cancel"
                                            CssClass="btn btn-primary btn-xs white_cr"><span class="glyphicon glyphicon-ban-circle"></span>Cancel</asp:LinkButton>
                                    <br />
                                    <br />
                                </div>

                            </div>

                        </FormTemplate>
                    </EditFormSettings>

【问题讨论】:

    标签: javascript c# asp.net ajax telerik


    【解决方案1】:

    您可以考虑的一种方法是利用客户端事件,OnValueChangedRadNumbericTextBox 控件,而不是服务器端事件。

    例如,

    <telerik:RadNumericTextBox ID="txt_CashAndEquivalents" runat="server" Text='<%# Eval("CashAndEquivalents")%>' Type="Number" DataType="System.Decimal" Width="160" NumberFormat-GroupSizes="3" TabIndex="1">
        <ClientEvents OnValueChanged="DoSum" />
    </telerik:RadNumericTextBox>
    
    <script type="text/javascript">
        function DoSum(sender, eventArgs)
        {
            var txt_ShortTermInvestments = $find('<%=txt_ShortTermInvestments.ClientID %>');
            var txt_OneTotal = $find('<%=txt_ShortTermInvestments.ClientID %>');
            var val_CashAndEquivalents = sender.get_value();
            var val_ShortTermInvestments = txt_ShortTermInvestments.get_value();
            txt_OneTotal.set_value(val_CashAndEquivalents + val_ShortTermInvestments);
        }
    </script>
    

    上面的代码只是演示了这个想法,还没有经过测试。所以试一试,看看它是否适合你。

    有关可用客户端事件的更多详细信息,请参阅以下链接。

    http://docs.telerik.com/devtools/aspnet-ajax/controls/numerictextbox/client-side-programming/radnumerictextbox-client-object#radnumerictextbox-client-object

    【讨论】:

    • 谢谢,但这是否意味着我不能在 radgrid 中将 ajax 与 Edit form 一起使用?
    • @AnynameDonotcare 我认为您仍然可以。但是您需要 ajaxfy 的是整个 RadGrid 控件,而不仅仅是编辑表单部分。
    • 请给我一个关于第二种方法的快照
    • 您可以在 RadAjaxManager 设置中尝试类似的操作,&lt;telerik:AjaxSetting AjaxControlID="RadGrid1"&gt;&lt;UpdatedControls&gt;&lt;telerik:AjaxUpdatedControl ControlID="RadGrid1" /&gt;&lt;/UpdatedControls&gt;&lt;/telerik:AjaxSetting&gt;
    • 正如 woodykiddy 所说,启用整个网格的 ajax。 Telerik 在这里确认:telerik.com/forums/ajax-in-edit-form-radgrid 另外,如果您将在编辑表单中进行复杂的操作,请考虑使用单独的弹出窗口,如下所示:demos.telerik.com/aspnet-ajax/controls/examples/integration/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多