c# - Repeater 在 PostBacks 上丢失了它的数据

标签 c# asp.net webforms

中继器标记:

<asp:Repeater ID="stat_Rptr" runat="server">
                <ItemTemplate>
                    <asp:CheckBox ID="IsSelected_ChkBx" runat="server" Text='<%# Eval("Item") %>' />
                    &nbsp;<asp:TextBox ID="Value_TxtBx" runat="server"></asp:TextBox>
                    <asp:HiddenField ID="ID_HdnFld" runat="server" Value='<%# Eval("ID") %>' />
                </ItemTemplate>
                <SeparatorTemplate>
                    <br></br>
                </SeparatorTemplate>
            </asp:Repeater>

代码隐藏:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            PopulateStatRptr();
        }
     }


    private void PopulateStatRptr()
    {
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;

        string _connString = "Data Source=localhost\\SqlExpress;Initial Catalog=MyDb;Integrated Security=True";

        conn = new SqlConnection(ConString);
        comm = new SqlCommand("SELECT ID, Item FROM Stats", conn);

        try
        {
            conn.Open();
            reader = comm.ExecuteReader();
            stat_Rptr.DataSource = reader;
            stat_Rptr.DataBind();
            reader.Close();
        }

        finally
        {
            conn.Close();
        }
    }

最佳答案

好的,看来Repeater是一个动态控件。如果您在代码隐藏中进行绑定(bind),您必须意识到项目模板中的文本框和复选框在您使用 DataBind() 之前不存在。如果您禁用 View 状态,除非您在每次页面加载时进行数据绑定(bind),否则您将看不到它们。在这种情况下,您将从 View 状态获取值。

检查这个link出。

关于c# - Repeater 在 PostBacks 上丢失了它的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886683/

相关文章:

c# - 仅当在计算按钮之前单击确认按钮时,如何才能显示 lblmessage?

.net - 是否有一个等效于 .net 的标准 Web 表单(不是 MVC)的 authorizeattribute

c# - 如何使用 C# 从 XML 文件中获取子属性值

c# - youtube 嵌入 iframe 黑盒

c# - 使用 C# 更新另一台机器(共享文件夹/网络)上存在的文件(web.config)中的值

asp.net - 在中继器中显示空控件

asp.net - AcquireRequestState 中的长时间延迟

c# - GPU音频处理

c# - UserControl 中的 Window.Resources 样式 "could not be resolved"

c# - 从DataTable中选取单列数据列出