azure 如何将消息发布到只包含用户发布的消息列表的留言板页ASP.NETWebForm

cyvaqqii  于 2022-11-30  发布在  .NET
关注(0)|答案(2)|浏览(127)

我只有一个简单的消息页面,其中包含发件人:文本:和一个提交按钮,然后我有另一个页面,它什么都不包含,这是我的"留言板",最新发布的消息在板的顶部,两者都是aspx页面与母版页。
我有一个SQL数据库,我已经假设将有一个表,其中From:消息:(我想是用varchar),但我不明白它是如何以最新到最旧的列表方式插入留言板页面的。
邮件. aspx-发件人:只是一个div,提交的消息将出现在下拉列表中
我希望它是超级简单没有很酷的功能,只有"提交消息"-〉"出现在MessageBoard.aspx给每个人",就是这样

ijnw1ujt

ijnw1ujt1#

好的,有几个活动部件。
假设您有SQL服务器在运行。假设您有一个有效的连接?
好的,那么在post a new message页面上,你有这样的标记:

<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");

    }

所以,它看起来像这样:

当您点击"发布消息"时,我们将跳转到该页面,并标记:

<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");
    }

而我们现在看到/拥有的是:

lmvvr0a8

lmvvr0a82#

你没有解释你所说的“* 我不明白它是如何以最新到最旧的列表方式插入留言板页面的 *",所以我只能猜测。
当一条新消息被发布时,您将它插入到数据库中,包括一个DateTime列。然后,您的消息列表页面只抓取最新的nn消息,按最新的消息排在最前面。
我假设你知道如何做到这一点。如果不知道,请阅读一些关于实体框架核心的内容,因为它提供了一种非常好的处理数据库的方法。
所以,原则上,你的问题并不比这更复杂。然而,在这方面有许多变化,例如实时更新消息列表,为此你应该使用SignalR,但如果没有更具体的解释你想要什么,很难提出任何建议。

相关问题