Ad

View Content In Table Row Detail With Format JSON

- 1 answer

I created a table in which clicking on a button opens and closes the details of the row itself. Inside the details you can see a JSOn that I can't format but above all I can't get it into the size of the table.

Is there any way?

I did it like this:

HTML

<section>
<table style="font-family: arial, sans-serif;  border-collapse: collapse; width: 100%; table-layout: fixed; " 
        >
    @* Intestazione *@
    <thead>
        <tr>
            <th>
                ID TRANSAZIONE
            </th>
            <th>
                DATA
            </th>
            <th>
                DESCRIZIONE
            </th>
            <th>
                SORGENTE
            </th>
            <th>
                DETTAGLI
            </th>
        </tr>
    </thead>

    @* Valori Table *@
    <tbody>
        @if (Model.Tracelog != null)
        {
            @foreach (var item in Model.Tracelog)
            {
                <tr class="expandable @((item.TransactionSequence == "1") ? "request" : "response")">
                    <td>
                        @Html.DisplayFor(modelItem => item.TransactionId)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.TraceDate)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.TraceDescription)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.SourceName)
                    </td>
                    <td>
                        <input class="btn btn-info" type="button" value="Apri Dettagli">
                    </td>
                </tr>
                <tr>
                    <td colspan="5">
                        @(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(item.TraceBlob)));
                    </td>
                </tr>
            }
        }
    </tbody>
</table>

CSS

  <style>

    td, th {
        border: 1px solid #dddddd;
        text-align: left;
        padding: 8px;
    }
</style>
<style type="text/css">


    .request {
        background-color: LightGreen;
    }

    .response {
        background-color: LightCoral;
    }
</style>

JS

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="/js/jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('.expandable').nextAll('tr').each(function () {
            if (!($(this).is('.expandable')))
                $(this).hide();
        });
        $('.expandable input[type=button]').click(function () {
            var trElem = $(this).closest("tr");
            trElem.nextAll('tr').each(function () {
                if ($(this).is('.expandable')) {
                    return false;
                }
                $(this).toggle();
            });
        });
        $('#expand_all').click(function () {
            $('.expandable').nextAll('tr').each(function () {
                if (!($(this).is('.expandable')))
                    $(this).show();
            });
        });
        $('#collaps_all').click(function () {
            $('.expandable').nextAll('tr').each(function () {
                if (!($(this).is('.expandable')))
                    $(this).hide();
            });
        })
    });
</script>

The result is the following: enter image description here

Thanks in advance.

edit: I would like to show it in JSON format, that is:

{
     "MessageBody": {
         "IdGateway": "002",
         "MsgId": "a8beaabe-80da-4721-bc67-7983ee87d516",
         "Timestamp": "1579516070021",
         "Version": "1.0",
         "Period": "300000",
         "SensorsStatus": [
             {
                 "SensorId": "status",
                 "SensorValue": "0"
             }
         ]
     },
     "Topic": "CERT / 01234 / GICS / STATUS / 002"
}
Ad

Answer

use tag after . It show original text

table, th, td {
  border: 1px solid black;
}
<table>
  <tr>
    <th>Month</th>
    <th>Savings</th>
  </tr>
  <tr>
    <td>January</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>February</td>
    <td><pre>{
     "MessageBody": {
         "IdGateway": "002",
         "MsgId": "a8beaabe-80da-4721-bc67-7983ee87d516",
         "Timestamp": "1579516070021",
         "Version": "1.0",
         "Period": "300000",
         "SensorsStatus": [
             {
                 "SensorId": "status",
                 "SensorValue": "0"
             }
         ]
     },
     "Topic": "CERT / 01234 / GICS / STATUS / 002"
}</pre></td>
  </tr>
</table>

UPD: inside the table

Ad
source: stackoverflow.com
Ad