当gridview再次绑定时,我如何保留在gridview's模板字段内的文本框中输入的值

本文关键字:gridview 字段 输入 文本 定时 绑定 保留 何保留 | 更新日期: 2023-09-27 18:10:36

gridview再次获得databound时,我如何保留在gridview's templatefield内部的TextBox中输入的值?
有人能告诉我为什么吗?也许能帮我找到解决办法?
例如,点击一个按钮,点击事件是Gridview1.DataBind(),但我们失去了所有的文本框的值。

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <%--post GridView--%>
        <asp:GridView ID="posts" runat="server">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%--Comments Gridview--%>
                        <asp:GridView ID="comments" runat="server"></asp:GridView>
                        <%--a Textbox and bUtton For sending new Comment--%>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        <asp:Button ID="Button1" runat="server" Text="Button" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel> 

    protected void Button1_Click(object sender, EventArgs e)
{
    posts.DataSource = GetData();
    posts.DataBind();
}  

Edit1


让我解释更多,当一个用户发送一个新的评论,我将广播一个消息(与signalr)给所有其他用户更新他们的Gridviews(当一个客户端得到广播消息button1_Click,将被jquery调用)。我的问题是,如果其他用户在他们的文本框上输入新的评论,将丢失他们键入的评论。

当gridview再次绑定时,我如何保留在gridview's模板字段内的文本框中输入的值

要在SessionState对象中存储字符串数组,然后读取它,请参考以下示例代码片段:

string[] _arr = {"a", "b", "c" }; // sample array - replace by 15 entries pertinent to your case
Session["arrString"] = _arr ;

SessionState读回:

string[] arrFromSession = (string[])Session["arrString"];

希望这将帮助。祝好,