ASP.NET - 当文本框失去焦点时,在gridview中填充/更新行

时间:2010-08-20 17:38:16

标签: asp.net vb.net gridview textbox

我在updatepanel中有以下gridview:

<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”时,我收到此编译错误:

  

编译错误说明:An   编译期间发生错误   为此提供服务所需的资源   请求。请查看以下内容   具体的错误细节和修改你的   适当的源代码。

     

编译器错误消息:BC30456:   'Desconto_TextChanged'不是会员   'ASP.index_aspx'。

     

来源错误:

     

204行:
   205行:
   第206行:
   207行:
   208行:
  

     

源文件:   C:\的Inetpub \ wwwroot的\ Facturas \ Facturas \的Index.aspx   行:206

2 个答案:

答案 0 :(得分:1)

默认情况下,

TextBox控件不会启动回发。您可以为每个文本框控件设置AutoPostBacktrue

答案 1 :(得分:1)

我相信您需要的活动是TextChanged。就像lincolnk所说,你需要AutoPostBack设置为True,文本框才能触发回发。然后,在事件处理程序内部,调用Dados.DataBind()重新加载GridView的数据。