Ich habe eine Chat-Anwendung erstellt. Wenn ich etwas in ein Textfeld eintrage und auf Enter klicke, wird der Text in die Datenbank eingefügt und die Bildlaufleiste geht hoch. Ich habe ein Javascript verwendet, um beim Klicken nach unten zu scrollen, was gut funktioniert, aber aufgrund des Timers bewegt sich die Bildlaufleiste wieder nach oben, sobald sie nach unten gezogen wird. Mein Code folgt
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
#kdiv1
{
position:relative;
left:300px;
top:20px;
height:400px;
width:400px;
overflow:auto;
}
#kdiv2
{
position:relative;
top:100px;
left:300px;
}
</style>
<script type="text/javascript">
function scrooldown(div) {
var scrollDiv = document.getElementById(div);
scrollDiv.scrollTop = scrollDiv.scrollHeight;
scrollDiv = null;
}
</script>
</head>
<body>
<form id="form1" runat="server" defaultfocus="text">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" RenderMode="Block">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="button1" EventName="Click" />
</Triggers>
<ContentTemplate>
<div id="kdiv1">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<span>
<%# DataBinder.Eval(Container.DataItem, "Message") %> <br />
</span>
</ItemTemplate>
</asp:Repeater>
</div>
<div id="kdiv2">
<asp:TextBox ID="text" runat="server"/>
<asp:Button ID="button1" runat="server" onclick="button1_Click" OnClientClick="scrooldown('kdiv1')" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
C#-Code
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);
try
{
OdbcCommand cmd = new OdbcCommand("INSERT INTO shoutbox(name, message)VALUES(?, ?)", MyConnection);
cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = "something";
cmd.Parameters.Add("@email", OdbcType.Text).Value = text.Text;
MyConnection.Open();
cmd.ExecuteNonQuery();
MyConnection.Close();
}
catch
{
}
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));
}
Repeater1.DataSource = values;
Repeater1.DataBind();
text.Text = "";
UpdatePanel1.Update();
}
catch
{
}
}
}