Динамически изменить класс CSS - PullRequest
0 голосов
/ 27 июня 2018

Я работал над небольшим проектом для чата с использованием 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 представляет мое имя / идентификатор, а Label2 представляет имя / идентификатор другого участника чата, поэтому эти значения могут использоваться для определения, отправил ли я его или другой человек.

1 Ответ

0 голосов
/ 27 июня 2018

Я бы сказал, в псевдокоде:

   <% 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...