Telerik RadGrid - RadNumericTextBox OnValueChanged - клиентская часть - как работает с текущим элементом (строка) - PullRequest
0 голосов
/ 10 января 2020

Вот ASPX :

  <telerik:RadGrid ID="grd_cart" runat="server" AutoGenerateColumns="False" Skin="WebBlue" OnItemCommand="grd_cart_ItemCommand">
    <GroupingSettings CollapseAllTooltip="Collapse all groups"></GroupingSettings>
    <MasterTableView>
        <Columns>
            <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_ID column" HeaderText="ID" UniqueName="TemplateColumn_ID" Visible="False">
                <ItemTemplate>
                    <asp:Label ID="lbl_id" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                </ItemTemplate>
                <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="30px" />
                <ItemStyle Font-Size="16px" Height="70px" />
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn_Quantity column" HeaderText="Quantity" UniqueName="TemplateColumn_Quantity">
                <ItemTemplate>
                    <telerik:RadNumericTextBox ID="rad_n_txt_quantity" runat="server" CssClass="input-text qty text rad_n_txt_quantity_class" MaxValue="100" MinValue="1" NumberFormat-DecimalDigits="0" ShowSpinButtons="True" Value='<%# Convert.ToDouble(Eval("Quantity").ToString()) %>' ClientEvents-OnValueChanged="rad_n_value_changed"></telerik:RadNumericTextBox>
                </ItemTemplate>
                <HeaderStyle Font-Bold="True" Font-Size="Medium" Width="100px" />
                <ItemStyle Font-Size="16px" Height="70px" />
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

Вот JavaScript:

function rad_n_value_changed(sender, eventArgs) {
    var grid = $find("<%=grd_cart.ClientID %>");
    if (grid) {
        alert('grid found');
    } else {
        alert('grid not found');
    }
    var label_id = $find("<%=grd_cart.ClientID %>").get_masterTableView().get_dataItems()[0].findControl("lbl_id");
    alert(label_id.val());
}

Это js код оповещения lbl_id текст FIRST элемент (строка) сетки.
Как я могу предупредить lbl_id текст CURRENT элемент (строка) сетки.
средняя строка, которая мы щелкнули RadNumericTextBox, чтобы изменить его значение.

1 Ответ

0 голосов
/ 10 января 2020

Пожалуйста, посмотрите на следующий фрагмент кода, который отлично работает на моем конце.

ASPX:

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" DataSourceID="SqlDataSource1"
    AllowPaging="true" OnItemDataBound="RadGrid1_ItemDataBound">
    <MasterTableView DataKeyNames="OrderID">
        <Columns>
            <telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity" />
            <telerik:GridTemplateColumn HeaderText="value" UniqueName="value">
                <ItemTemplate>
                    <telerik:RadNumericTextBox runat="server" ID="value" NumberFormat-AllowRounding="false">
                        <NumberFormat GroupSeparator="" />
                        <ClientEvents OnValueChanged="checkValues" />
                    </telerik:RadNumericTextBox>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

C#:

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = e.Item as GridDataItem;
        RadNumericTextBox Editbtn = item.FindControl("value") as RadNumericTextBox;
        Editbtn.Attributes.Add("rowindex", item.ItemIndex.ToString());
    }
}

JavaScript:

<script type="text/javascript">
    function checkValues(sender, args) {
        var radGrid = $find('<%=RadGrid1.ClientID %>');
        var masterTable = radGrid.get_masterTableView();
        var row = sender._element.getAttribute("rowindex");
        if (row != 0) {
            for (var i = 0; i < row; i++) {
                if (masterTable.get_dataItems()[i].findControl("value").get_value() < args.get_newValue()) {
                    sender.set_value(" ");
                    sender.focus();
                }
            }
        }
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...