我只有一个简单的消息页面,包括:文本:和一个提交按钮,然后我有另一个页面,它什么也不包含,这是我的“留言板”--最近发布的消息位于主板上,都是带有母版页的aspx页面。
我有一个SQL DB,我已经假设会有一个包含From: Message:(使用varchar )的表,但是我不明白它是如何以最近最古老的列表方式插入到留言板页面的。
Message.aspx -出发地:文本:提交MessageBoard.aspx -只是一个div,提交的消息将出现在下拉列表中
我希望它是超级简单的没有酷的特性,只有“向每个人提交在MessageBoard.aspx上出现的消息”,仅此而已。
发布于 2022-11-27 00:49:36
好的,有几个运动部件。
假设您正在运行SQL server。假设你有一个有效的连接?
好的,那么在发布一个新的消息页面上,您可以得到以下标记:
<h3>Post a message</h3>
<h4>enter your name</h4>
<asp:TextBox ID="txtName" runat="server" Width="250px"></asp:TextBox>
<br />
<h4>Enter your message</h4>
<asp:TextBox ID="txtMsg" runat="server" Height="185px" Width="520px"
TextMode="MultiLine" Font-Size="Large" style="border-radius:20px;border:solid 2px"
></asp:TextBox>
<br />
<br />
<asp:Button ID="cmdNewMessage" runat="server" Text="Post Message" CssClass="btn"
OnClick="cmdNewMessage_Click" />下面的代码如下所示:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void cmdNewMessage_Click(object sender, EventArgs e)
{
string strSQL =
@"INSERT INTO tblMessages (UName, Message, MessageDate)
VALUES (@UName, @Message, @MessageDate)";
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
{
using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
{
conn.Open();
cmdSQL.Parameters.Add("@UName", SqlDbType.NVarChar).Value = txtName.Text;
cmdSQL.Parameters.Add("@Message",SqlDbType.NVarChar).Value = txtMsg.Text;
cmdSQL.Parameters.Add("@MessageDate", SqlDbType.NVarChar).Value = DateTime.Now;
cmdSQL.ExecuteNonQuery();
}
}
Response.Redirect("MessageBoard.aspx");
}看起来是这样的:

当您点击post消息时,我们跳到这个页面,标记:
<asp:Button ID="cmdPost" runat="server"
Text="Post a new message"
CssClass="btn" OnClick="cmdPost_Click" />
<br />
<br />
<h2>Messages</h2>
<asp:GridView ID="GridView1" runat="server" Width="50%"
AutoGenerateColumns="False" DataKeyNames="ID" >
<Columns>
<asp:BoundField DataField="UName" HeaderText="Posted by" />
<asp:BoundField DataField="MessageDate" HeaderText="At" ItemStyle-Width="180px" />
<asp:TemplateField HeaderText="Message" >
<ItemTemplate>
<asp:Textbox ID="txtMsg" runat="server" TextMode="MultiLine" Width="100%"
Text='<%# Eval("Message") %>'
Height='<%# (Regex.Matches(Eval("Message").ToString() , System.Environment.NewLine).Count + 1) * 30 %>'
>
</asp:Textbox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>守则是:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
LoadGrid();
}
void LoadGrid()
{
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
{
string strSQL = "SELECT * FROM tblMessages ORDER BY MessageDate DESC";
using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
{
conn.Open();
GridView1.DataSource = cmdSQL.ExecuteReader();
GridView1.DataBind();
}
}
}
protected void cmdPost_Click(object sender, EventArgs e)
{
Response.Redirect("NewMessage.aspx");
}我们现在看到/拥有这样的情况:

发布于 2022-11-26 19:54:29
你不能解释你所说的“我不明白它是如何以最近最古老的方式插入到留言板页面中的东西”,所以我只能猜测。
当发布新消息时,将其插入数据库,包括一个DateTime列。然后,您的邮件列表页面只需获取最新的nn消息,按最新的优先顺序排列。
我猜你知道怎么做。如果没有,请阅读一些有关实体框架核心的内容,因为它提供了一种非常好的处理数据库的方法。
所以,在原则上,你的问题并不比这更复杂。但是,在这方面有很多不同的地方,比如实时更新消息列表,为此您应该使用SignalR,但是如果不对您想要的内容进行更具体的解释,就很难提出任何建议。
https://stackoverflow.com/questions/74584385
复制相似问题