ASP.NET - заполнить / обновить строку в gridview, когда текстовое поле теряет фокус - PullRequest
1 голос
/ 20 августа 2010

У меня есть следующая сетка, которая находится внутри панели обновления:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="ButtonAdd" runat="server" OnClick="ButtonAdd_Click" Text="Novo Artigo" />
        <asp:GridView ID="Dados" runat="server" AutoGenerateColumns="False" CssClass="Grid">
            <Columns>
                <asp:TemplateField HeaderText="Artigo">
                    <ItemTemplate>
                        <asp:TextBox ID="Artigo" runat="server"></asp:TextBox>
                        <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
                        TargetControlID="Artigo"
                        PopupControlID="PanelArtigos"
                        >
                        </asp:ModalPopupExtender>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Descrição">
                    <ItemTemplate>
                        <asp:TextBox ID="Descricao" runat="server" Width="300px"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="IVA">
                    <ItemTemplate>
                        <asp:TextBox ID="IVA" runat="server" Width="40px" Enabled="false"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Pr. Unit.">
                    <ItemTemplate>
                        <asp:TextBox ID="PU" runat="server" Width="50px"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="% Desc.">
                    <ItemTemplate>
                        <asp:TextBox ID="Desconto" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="UN">
                    <ItemTemplate>
                        <asp:TextBox ID="UN" runat="server" Width="50px" Enabled="false"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Quant.">
                    <ItemTemplate>
                        <asp:TextBox ID="Quantidade" runat="server" Width="50px"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Total Liquido">
                    <ItemTemplate>
                        <asp:TextBox ID="TotalLiquido" runat="server" Enabled="false"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="RemoveArtigo" runat="server" OnClick="RemoveArtigo_Click">Remover
                        </asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <HeaderStyle Font-Size="Small" />
            <RowStyle Font-Size="Small" CssClass="grid" />
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

Как видите, у меня есть несколько текстовых полей.

Когда я, например, изменяю значение в текстовом поле, значение Desconto и оставьте это текстовое поле, я хочу, чтобы строка, где я должен быть обновлен, используя новое значение, присутствующее в текстовом поле.Это похоже на TextChanged или onBlur, но внутри панели обновления это не работает.

Какой лучший способ сделать это?

Я использую VB.NET.

Спасибо.

РЕДАКТИРОВАНИЕ:

При добавлении OnTextChanged = "Desconto_TextChanged" я получаю эту ошибку компиляции:

Описание ошибки компиляцииПроизошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса.Просмотрите следующие конкретные сведения об ошибке и измените исходный код соответствующим образом.

Сообщение об ошибке компилятора: BC30456: «Desconto_TextChanged» не является членом «ASP.index_aspx».

Ошибка источника:

Строка 204:
Строка 205:
Строка 206:
Строка 207:
Строка 208:

Исходный файл: C: \ inetpub \ wwwroot\ Facturas \ Facturas \ index.aspx Строка: 206

Ответы [ 2 ]

1 голос
/ 21 августа 2010

Я считаю, что вам нужно событие TextChanged. Как сказал Линкольн, вам нужно AutoPostBack установить в True текстовое поле для запуска обратной передачи. Затем внутри обработчика событий вызовите Dados.DataBind(), чтобы перезагрузить данные GridView.

1 голос
/ 20 августа 2010

TextBox элементы управления не будут инициировать обратную передачу по умолчанию. Вы можете установить AutoPostBack на true для каждого элемента управления textbox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...