首页 > 解决方案 > 动态改变css类

问题描述

我一直在使用 ASP.NET 和 WebForms 为聊天框开发一个小项目,基本上我一直在尝试更改面板的类,因此我可以确定消息应该放在左侧还是右侧盒子取决于谁寄的。

这就是我目前使用所有这些的方式:

<div class="lv-body" id="ms-scrollbar" style="overflow:scroll; overflow-x: hidden; height:520px;">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
           <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="1000"></asp:Timer>
           <asp:DataList ID="DataList3" runat="server">
                <ItemTemplate>
                    <asp:Panel class="lv-item media" id="MessageBox" runat="server">
                        <div class="media-body"> 
                            <div class="ms-item"> 
                                <span class="glyphicon glyphicon-triangle-left" style="color:#000000;"></span> 
                                <asp:Label ID="Message" runat="server" Text='<%# Bind("Message") %>'></asp:Label>
                            </div>
                            <small class="ms-date">
                                <span class="glyphicon glyphicon-time"></span>&nbsp; 
                                <asp:Label Width="900px" ID="Date" runat="server" Text='<%# Bind("Date") %>'></asp:Label>
                            </small> 
                        </div>
                    </asp:Panel>
                  </ItemTemplate>
             </asp:DataList>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

这就是我通过 CodeBehind 填充值的方式:

    public void LoadChatbox()
    {
        DateTime date = DateTime.Now;
        string date3 = date.ToString("dd-MM-yyyy");
        MySQL.MySqlCommand Cmd = new MySQL.MySqlCommand(MySQL.MySqlCommandType.SELECT);
        Cmd.Select("helpdesk").Where("Sender", Label1.Text).And("Receiver", Label2.Text).Or("Sender", Label2.Text).And("Receiver", Label1.Text).Order("UniqueID");
        MySQL.MySqlReader R = new MySQL.MySqlReader(Cmd);
        DataList3.DataSource = R._dataset;
        DataList3.DataBind();
    }

一切正常,但基本上我需要一种方法来确定 MessageBox(面板)是显示在左侧还是右侧。在其类中添加“正确”可以做到这一点,但我需要一种方法来做到这一点。

编辑:Label1 代表我的姓名/ID,Label2 代表聊天中其他成员的姓名/ID,因此这些值可用于确定是我发送的还是其他人发送的。

标签: c#asp.netwebforms

解决方案


我会说,用伪代码:

   <% if (Sender==me){  %>
      <div class="media-body" style="text-align: right;"> 
        ...
     </div>
    else
      <div class="media-body" style="text-align: left;">
       ... 
      </div>
    <% } %>

除了你最好使用参数化查询之外,这行代码很危险:

 Cmd.Select("helpdesk").Where("Sender", Label1.Text).And("Receiver", Label2.Text).Or("Sender", Label2.Text).And("Receiver", Label1.Text).Order("UniqueID");

推荐阅读