Member 12749751 Ответов: 1

Сомнение относительно извлечения значения текстового поля из представления сетки


В моем коде есть текстовое поле и другая метка комиссии, комиссия будет непосредственно привязана из базы данных, а текстовое поле должно назначить новую комиссию ,теперь я должен проверить, что значение текстового поля, которое было введено динамически пользователем,если введенное значение больше значения (т. е. в метке"комиссия"), оно должно выдать ошибку msg, что" пожалуйста, введите значение меньше, чем комиссия".

и я также использую javascript для извлечения значений текстового поля ..но значение текстового поля возвращается как null

Что я уже пробовал:

&ЛТ;в ASP:GridView в идентификатор="gvOprList" атрибут runat="сервер" AutoGenerateColumns="false" - в CssClass="таблица-таблица наведения-граничит" OnRowDataBound="gvOprList_RowDataBound"&ГТ;



protected void gvOprList_RowDataBound(отправитель объекта, GridViewRowEventArgs e)
{
по каждому элементу (GridViewRow GR в gvOprList.Строк)
{
TextBox txtCommission = gr. FindControl ("txtNewCommission") как текстовое поле;
Label lblCommission = gr. FindControl ("lblOprCommission") в качестве метки;
txtCommission.Атрибуты.Добавить("метода onkeypress", "код JavaScript:вычисление(" + Эл.Подряд.Параметр rowindex + ",' " + (txtCommission.ClientID)+ " ', '" + (lblCommission.Текст)+ " ')");
}
}

Karthik_Mahalingam

использовать событие onkeyup

1 Ответов

Рейтинг:
9

Vincent Maverick Durano

Я бы посоветовал вам вместо этого заняться этим на стороне клиента. Вы можете легко сделать это с помощью jQuery. Вот краткий пример:

HTML:

<asp:GridView ID="gv1" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:TextBox ID="txtCommission" placeholder="Enter value" runat="server" CssClass="txtField" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="lblCommission" runat="server" CssClass="lblField" Text='<%# Bind("Commission") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>


ссылка на jQuery:
<script src="https://code.jquery.com/jquery-3.1.0.slim.min.js" integrity="sha256-cRpWjoSOw5KcyIOaZNo4i6fZ9tKPhYYb6i5T9RSVJG8=" crossorigin="anonymous"></script>


язык JavaScript:
$(function () {
            $(".txtField").keyup(checkValue);

            function checkValue() {
                // loop through the rows
                $(".txtField").each(function () {
                    // get the values from this row:
                    var $val1 = parseInt($(this).val()) || 0;
                    var $val2 = parseInt($(this).parent().parent().find(".lblField").text()) || 0;

                    if ($val1 > $val2) {
                        alert("Please enter a value less than the commission");
                        $(this).focus();
                        return false;
                    }
                    
                });
            }
        });


С ФОНОВЫМ КОДОМ:

using System;
using System.Collections.Generic;

namespace WebFormsDemo
{
    public class Item
    {
        public string Name { get; set; }
        public int Commission { get; set; }
    }
    public partial class JavaScript : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List<Item> item = new List<Item>();
                item.Add(new Item { Name = "Item1", Commission = 100 });
                item.Add(new Item { Name = "Item2", Commission = 200 });
                item.Add(new Item { Name = "Item3", Commission = 300 });
                item.Add(new Item { Name = "Item4", Commission = 400 });
                item.Add(new Item { Name = "Item5", Commission = 500 });

                gv1.DataSource = item;
                gv1.DataBind();

            }
        }
    }
}


Это должно работать в соответствии с вашими требованиями.


Member 12749751

сэр...этот код javascript выдает мне ошибку в первой строке " $(function () {"

пожалуйста, посоветуйте любой другой вариант

F-ES Sitecore

Вам нужно добавить ссылку на скрипт в jQuery.

Vincent Maverick Durano

Я хотел включить ссылку на jQuery из кода, но когда я это сделал, это нарушило форматирование кода. Вам нужно включить ссылку на jQuery, как это было предложено.

Я обновил решение и включил ссылку на jQuery. Вам нужно добавить его перед вашим JavaScript.

Member 12749751

Сэр...все сделано...большое вам спасибо

Vincent Maverick Durano

отлично! Еще одна вещь, однако, не забудьте закрыть эту тему, отметив сообщение, которое помогает в качестве ответа для будущих читателей. Спасибо!

Member 12749751

У меня есть еще одна проблема: я использую одну и ту же страницу регистрации как для редактирования профиля, так и для регистрации нового участника.теперь все работает правильно, но когда я нажимаю на кнопку "Добавить нового участника", он открывает "страницу с заполненными пользовательскими данными" (то есть страницу управления профилем), предложите мне, какой код я должен написать при загрузке страницы, чтобы система могла различать, когда она должна загрузить страницу управления профилем и когда "Добавить страницу участника"

Vincent Maverick Durano

Я бы посоветовал вам создать отдельный поток для вашего другого вопроса, чтобы ответы на этот поток не сбивали с толку других.

Member 12749751

ОКК сэр

Member 12749751

Сэр, у меня есть еще одно сомнение, теперь я проверил оба значения и, если значение больше, чем значение комиссии, то я хочу показать предупреждение, а также установить значение текстового поля как ноль..все работает, но я не могу настроить значение текстового поля на ноль ..plss help

Vincent Maverick Durano

просто делать $(this).val("0");

Member 12749751

спасибо...но я уже сделал это вчера