中继器仅显示带有CSS的第一条记录

时间:2011-09-11 20:46:03

标签: asp.net ajax timer

在下面的代码中,使用DIV标签,转发器只显示从数据库中检索到的第一条记录。删除DIV标记mbody一切正常。但为了调整脚本的格式,我开始使用这个DIV标签,但我无法查看添加记录。请检查错误的位置。

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer ID="Timer1" runat="server" ontick="Timer1_Tick" Interval="1000" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger controlid="Timer1" eventname="Tick" />
        </Triggers>
    <ContentTemplate>
    <asp:Repeater ID="Shout_Box" runat="server">
        <ItemTemplate><div id="mbody">
           <%# DataBinder.Eval(Container.DataItem, "Message") %>
        </div> </ItemTemplate>
    </asp:Repeater><div id="sbox_button">
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /></div>
    </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
<ContentTemplate><div id="sb_text"><asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Wrap="true" Width="400" Height="60" /></div></ContentTemplate>
</asp:UpdatePanel>

在上面的代码1转发器中,使用了1个按钮和1个文本框。通过向文本框添加文本并单击按钮,文本框的值将转到数据库并使用计时器进行检索。这个脚本是一种聊天脚本。但是使用DIV标签我无法显示所有记录: - (

服务器端代码

protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=chatserver;" + "UID=root;" + "PASSWORD=*****;" + "OPTION=3";
        OdbcConnection MyConnection = new OdbcConnection(MyConString);
        try
        {
            MyConnection.Open();
            OdbcCommand cmd = new OdbcCommand("Select message from shoutbox", MyConnection);
            OdbcDataReader dr = cmd.ExecuteReader();
            ArrayList values = new ArrayList();
            while (dr.Read())
            {

                    string ep = dr[0].ToString();
                    values.Add(new PositionData(ep));
                    Shout_Box.DataSource = values;
                    Shout_Box.DataBind();
            }
            TextBox1.Text = "";
        }
        catch
        {
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

            string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=chatserver;" + "UID=root;" + "PASSWORD=*****;" + "OPTION=3";
            OdbcConnection MyConnection = new OdbcConnection(MyConString);
            OdbcCommand cmd = new OdbcCommand("INSERT INTO shoutbox(name, message)VALUES(?, ?)", MyConnection);
            cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = "tick";
            cmd.Parameters.Add("@email", OdbcType.Text).Value = TextBox1.Text;
            MyConnection.Open();
            cmd.ExecuteNonQuery();
            MyConnection.Close();
            TextBox1.Text = string.Empty;
            UpdatePanel2.Update();
    }

1 个答案:

答案 0 :(得分:0)

将数据绑定移出while循环:

        while (dr.Read())
        {
                string ep = dr[0].ToString();
                values.Add(new PositionData(ep));
        }
        Shout_Box.DataSource = values;
        Shout_Box.DataBind();

读取每个值后绑定数据没有任何意义。