UpdatePanel中的GridView - 在按钮单击时获取更新的文本框值

时间:2011-10-06 19:51:26

标签: c# asp.net gridview updatepanel

IGNORE:

我在Onload方法中重新绑定了网格。

我有一个带有一些文本框的网格视图,我必须将它包装在UpdatePanel控件中。所以它看起来像这样:

<asp:UpdatePanel ID="upDistribution" runat="server" OnLoad="upDistribution_OnLoad">
    <ContentTemplate>
        <asp:GridView ID="gvDistributions" runat="server" AutoGenerateColumns="false"
            OnRowDataBound="gvDistributions_RowDataBound"
            CssClass="TallCells ContrastTable MaxWidth LeftHeaders"
            GridLines="Both" ShowFooter="True" style="">
            <RowStyle HorizontalAlign="Left"  />

            <EmptyDataTemplate>
                No pricing history data found.
            </EmptyDataTemplate>

            <Columns>
                <asp:TemplateField HeaderText="PriceA">
                    <ItemTemplate>

                        <asp:TextBox ID="txtPriceA" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="DistPrice">
                    <ItemTemplate>

                        <asp:TextBox ID="txtDistPrice" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
              </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

当我想获取为txtbox输入的值时,有一个“保存”按钮。如果GV周围没有UpdatePanel,我可以轻松获取txtbox值,如:

((TextBox)gvDistributions.Rows[0].Cells[0].FindControl("txtPriceA")).Text

但是当GridView被UpdatePanel包装时,上面的语句返回在页面加载上设置的值。

如何在不删除updatePanel的情况下获取文本框的值。我需要更新面板,因为行数和日期取决于另一个用户控件中的另一个变量。

3 个答案:

答案 0 :(得分:0)

根据我的理解,您应该使用更新面板的触发器,如下所示。

    <asp:UpdatePanel ...>
       <ContentTemplate>
       ...
       </ContentTemplate>
       <Triggers>
           <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
       </Triggers>
    </asp:UpdatePanel>

希望这会有所帮助!!

答案 1 :(得分:0)

TextBoxAutoPostBack属性设置True

一起使用
<asp:TextBox ID="txtPriceA" runat="server" AutoPostBack="True"/>

答案 2 :(得分:0)

我在onLoadMethod中重新绑定gridview