Search code examples
htmljquerybootstrap-table

How to add select element to columns using bootstrap-table.js


I'm using the bootstrap-table.js plugin to populate a table using dating returned from my api. I'm using the data format where you define the data using an array of objects and then define a "data-field" attribute in the <th> of the html table to link the data from the array. I need to include a select element in one of the columns so the use can select an option. The data will be sent back to my database using another api. Howvever, when I try to add a select element to the data array using jquery, the HTML output is [object Object]. I'm not sure how I can get a select element to appear using this method. Any advice is greatly appreciated!

This is the function that populates the table. The 'reason' key takes in the selection variable as a value, but the output in html is [object Object]

$(function () {
                let selection = $('<select class="form-select" id="inputGroupSelect01"><option>hello</option><option>goodbye</option><option>welcome</option></select>')
                let data = [
                    {
                        'date': obj.model.data.timestamp[365],
                        'temperature': obj.model.data.average_dry_bulb_temperature[365],
                        'hdd': parseFloat(obj.model.data.degree_day[365]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[365],
                        'expected': parseFloat(obj.model.data.predicted_value[365]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[366],
                        'temperature': obj.model.data.average_dry_bulb_temperature[366],
                        'hdd': parseFloat(obj.model.data.degree_day[366]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[366],
                        'expected': parseFloat(obj.model.data.predicted_value[366]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[367],
                        'temperature': obj.model.data.average_dry_bulb_temperature[367],
                        'hdd': parseFloat(obj.model.data.degree_day[367]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[367],
                        'expected': parseFloat(obj.model.data.predicted_value[367]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[368],
                        'temperature': obj.model.data.average_dry_bulb_temperature[368],
                        'hdd': parseFloat(obj.model.data.degree_day[368]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[368],
                        'expected': parseFloat(obj.model.data.predicted_value[368]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[369],
                        'temperature': obj.model.data.average_dry_bulb_temperature[369],
                        'hdd': parseFloat(obj.model.data.degree_day[369]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[369],
                        'expected': parseFloat(obj.model.data.predicted_value[369]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[370],
                        'temperature': obj.model.data.average_dry_bulb_temperature[370],
                        'hdd': parseFloat(obj.model.data.degree_day[370]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[370],
                        'expected': parseFloat(obj.model.data.predicted_value[370]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[371],
                        'temperature': obj.model.data.average_dry_bulb_temperature[371],
                        'hdd': parseFloat(obj.model.data.degree_day[371]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[371],
                        'expected': parseFloat(obj.model.data.predicted_value[371]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[372],
                        'temperature': obj.model.data.average_dry_bulb_temperature[372],
                        'hdd': parseFloat(obj.model.data.degree_day[372]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[372],
                        'expected': parseFloat(obj.model.data.predicted_value[372]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[373],
                        'temperature': obj.model.data.average_dry_bulb_temperature[373],
                        'hdd': parseFloat(obj.model.data.degree_day[373]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[373],
                        'expected': parseFloat(obj.model.data.predicted_value[373]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[374],
                        'temperature': obj.model.data.average_dry_bulb_temperature[374],
                        'hdd': parseFloat(obj.model.data.degree_day[374]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[374],
                        'expected': parseFloat(obj.model.data.predicted_value[374]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[375],
                        'temperature': obj.model.data.average_dry_bulb_temperature[375],
                        'hdd': parseFloat(obj.model.data.degree_day[375]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[375],
                        'expected': parseFloat(obj.model.data.predicted_value[375]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[376],
                        'temperature': obj.model.data.average_dry_bulb_temperature[376],
                        'hdd': parseFloat(obj.model.data.degree_day[376]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[376],
                        'expected': parseFloat(obj.model.data.predicted_value[376]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[377],
                        'temperature': obj.model.data.average_dry_bulb_temperature[377],
                        'hdd': parseFloat(obj.model.data.degree_day[377]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[377],
                        'expected': parseFloat(obj.model.data.predicted_value[377]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[378],
                        'temperature': obj.model.data.average_dry_bulb_temperature[378],
                        'hdd': parseFloat(obj.model.data.degree_day[378]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[378],
                        'expected': parseFloat(obj.model.data.predicted_value[378]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[379],
                        'temperature': obj.model.data.average_dry_bulb_temperature[379],
                        'hdd': parseFloat(obj.model.data.degree_day[379]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[379],
                        'expected': parseFloat(obj.model.data.predicted_value[379]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[380],
                        'temperature': obj.model.data.average_dry_bulb_temperature[380],
                        'hdd': parseFloat(obj.model.data.degree_day[380]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[380],
                        'expected': parseFloat(obj.model.data.predicted_value[380]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[381],
                        'temperature': obj.model.data.average_dry_bulb_temperature[381],
                        'hdd': parseFloat(obj.model.data.degree_day[381]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[381],
                        'expected': parseFloat(obj.model.data.predicted_value[381]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[382],
                        'temperature': obj.model.data.average_dry_bulb_temperature[382],
                        'hdd': parseFloat(obj.model.data.degree_day[382]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[382],
                        'expected': parseFloat(obj.model.data.predicted_value[382]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[383],
                        'temperature': obj.model.data.average_dry_bulb_temperature[383],
                        'hdd': parseFloat(obj.model.data.degree_day[383]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[383],
                        'expected': parseFloat(obj.model.data.predicted_value[383]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[384],
                        'temperature': obj.model.data.average_dry_bulb_temperature[384],
                        'hdd': parseFloat(obj.model.data.degree_day[384]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[384],
                        'expected': parseFloat(obj.model.data.predicted_value[384]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[385],
                        'temperature': obj.model.data.average_dry_bulb_temperature[385],
                        'hdd': parseFloat(obj.model.data.degree_day[385]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[385],
                        'expected': parseFloat(obj.model.data.predicted_value[385]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[386],
                        'temperature': obj.model.data.average_dry_bulb_temperature[386],
                        'hdd': parseFloat(obj.model.data.degree_day[386]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[386],
                        'expected': parseFloat(obj.model.data.predicted_value[386]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[387],
                        'temperature': obj.model.data.average_dry_bulb_temperature[387],
                        'hdd': parseFloat(obj.model.data.degree_day[387]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[387],
                        'expected': parseFloat(obj.model.data.predicted_value[387]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[388],
                        'temperature': obj.model.data.average_dry_bulb_temperature[388],
                        'hdd': parseFloat(obj.model.data.degree_day[388]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[388],
                        'expected': parseFloat(obj.model.data.predicted_value[388]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[389],
                        'temperature': obj.model.data.average_dry_bulb_temperature[389],
                        'hdd': parseFloat(obj.model.data.degree_day[389]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[389],
                        'expected': parseFloat(obj.model.data.predicted_value[389]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[390],
                        'temperature': obj.model.data.average_dry_bulb_temperature[390],
                        'hdd': parseFloat(obj.model.data.degree_day[390]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[390],
                        'expected': parseFloat(obj.model.data.predicted_value[390]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[391],
                        'temperature': obj.model.data.average_dry_bulb_temperature[391],
                        'hdd': parseFloat(obj.model.data.degree_day[391]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[391],
                        'expected': parseFloat(obj.model.data.predicted_value[391]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[392],
                        'temperature': obj.model.data.average_dry_bulb_temperature[392],
                        'hdd': parseFloat(obj.model.data.degree_day[392]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[392],
                        'expected': parseFloat(obj.model.data.predicted_value[392]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[393],
                        'temperature': obj.model.data.average_dry_bulb_temperature[393],
                        'hdd': parseFloat(obj.model.data.degree_day[393]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[393],
                        'expected': parseFloat(obj.model.data.predicted_value[393]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[394],
                        'temperature': obj.model.data.average_dry_bulb_temperature[394],
                        'hdd': parseFloat(obj.model.data.degree_day[394]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[394],
                        'expected': parseFloat(obj.model.data.predicted_value[394]).toFixed(0),
                        'reason': selection
                    },
                    {
                        'date': obj.model.data.timestamp[395],
                        'temperature': obj.model.data.average_dry_bulb_temperature[395],
                        'hdd': parseFloat(obj.model.data.degree_day[395]).toFixed(0),
                        'meterReading': obj.model.data.raw_value[395],
                        'expected': parseFloat(obj.model.data.predicted_value[395]).toFixed(0),
                        'reason': selection
                    },
                ]
                $table2.bootstrapTable({ data: data })
            })
        })

This is the HTML output

<table id="table2" class="table table-bordered table-hover">
   <thead>
      <tr>
         <th style="" data-field="date">
            <div class="th-inner ">Date</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="temperature">
            <div class="th-inner ">Temperature</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="hdd">
            <div class="th-inner ">HDD</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="meterReading">
            <div class="th-inner ">Meter</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="expected">
            <div class="th-inner ">Expected</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="replacement">
            <div class="th-inner ">Replacement</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="reason">
            <div class="th-inner ">Reason</div>
            <div class="fht-cell"></div>
         </th>
         <th style="" data-field="notes">
            <div class="th-inner ">Notes</div>
            <div class="fht-cell"></div>
         </th>
      </tr>
   </thead>
   <tbody>
      <tr data-index="0">
         <td>2020-05-01</td>
         <td>74.8</td>
         <td>9</td>
         <td>8060</td>
         <td>7426</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="1">
         <td>2020-05-02</td>
         <td>78.4</td>
         <td>6</td>
         <td>6300</td>
         <td>5717</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="2">
         <td>2020-05-03</td>
         <td>81</td>
         <td>3</td>
         <td>5520</td>
         <td>4483</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="3">
         <td>2020-05-04</td>
         <td>82.4</td>
         <td>2</td>
         <td>4710</td>
         <td>3818</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="4">
         <td>2020-05-05</td>
         <td>77.2</td>
         <td>7</td>
         <td>4520</td>
         <td>6287</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="5">
         <td>2020-05-06</td>
         <td>75.6</td>
         <td>8</td>
         <td>4710</td>
         <td>7046</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="6">
         <td>2020-05-07</td>
         <td>73</td>
         <td>11</td>
         <td>6140</td>
         <td>8281</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="7">
         <td>2020-05-08</td>
         <td>76.6</td>
         <td>7</td>
         <td>6970</td>
         <td>6572</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="8">
         <td>2020-05-09</td>
         <td>68.7</td>
         <td>15</td>
         <td>5120</td>
         <td>10322</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="9">
         <td>2020-05-10</td>
         <td>69.3</td>
         <td>15</td>
         <td>9460</td>
         <td>10037</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="10">
         <td>2020-05-11</td>
         <td>73.6</td>
         <td>10</td>
         <td>8890</td>
         <td>7996</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="11">
         <td>2020-05-12</td>
         <td>69.1</td>
         <td>15</td>
         <td>7440</td>
         <td>10132</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="12">
         <td>2020-05-13</td>
         <td>74.5</td>
         <td>10</td>
         <td>9040</td>
         <td>7569</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="13">
         <td>2020-05-14</td>
         <td>80.6</td>
         <td>3</td>
         <td>7160</td>
         <td>4673</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="14">
         <td>2020-05-15</td>
         <td>80.1</td>
         <td>4</td>
         <td>4690</td>
         <td>4910</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="15">
         <td>2020-05-16</td>
         <td>71.8</td>
         <td>12</td>
         <td>4730</td>
         <td>8850</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="16">
         <td>2020-05-17</td>
         <td>76.5</td>
         <td>8</td>
         <td>7350</td>
         <td>6619</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="17">
         <td>2020-05-18</td>
         <td>80.4</td>
         <td>4</td>
         <td>6140</td>
         <td>4768</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="18">
         <td>2020-05-19</td>
         <td>83.1</td>
         <td>1</td>
         <td>4900</td>
         <td>3486</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="19">
         <td>2020-05-20</td>
         <td>83.8</td>
         <td>0</td>
         <td>4270</td>
         <td>3154</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="20">
         <td>2020-05-21</td>
         <td>81.7</td>
         <td>2</td>
         <td>4310</td>
         <td>4151</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="21">
         <td>2020-05-22</td>
         <td>83.3</td>
         <td>1</td>
         <td>4310</td>
         <td>3391</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="22">
         <td>2020-05-23</td>
         <td>83.7</td>
         <td>0</td>
         <td>3740</td>
         <td>3201</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="23">
         <td>2020-05-24</td>
         <td>80.1</td>
         <td>4</td>
         <td>0</td>
         <td>4910</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="24">
         <td>2020-05-25</td>
         <td>71.1</td>
         <td>13</td>
         <td>0</td>
         <td>9183</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="25">
         <td>2020-05-26</td>
         <td>74.7</td>
         <td>9</td>
         <td>0</td>
         <td>7474</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="26">
         <td>2020-05-27</td>
         <td>73.2</td>
         <td>11</td>
         <td>0</td>
         <td>8186</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="27">
         <td>2020-05-28</td>
         <td>75.7</td>
         <td>8</td>
         <td>0</td>
         <td>6999</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="28">
         <td>2020-05-29</td>
         <td>78.8</td>
         <td>5</td>
         <td>0</td>
         <td>5527</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="29">
         <td>2020-05-30</td>
         <td>77.4</td>
         <td>7</td>
         <td>0</td>
         <td>6192</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
      <tr data-index="30">
         <td>2020-05-31</td>
         <td>78.6</td>
         <td>5</td>
         <td>0</td>
         <td>5622</td>
         <td>-</td>
         <td>[object Object]</td>
         <td>-</td>
      </tr>
   </tbody>
</table>

Solution

  • This line gives you a jQuery object:

    let selection = $('<select class="form-select" id="inputGroupSelect01"><option>hello</option><option>goodbye</option><option>welcome</option></select>')
    

    Instead, you want a string of HTML:

    let selection = '<select class="form-select" id="inputGroupSelect01"><option>hello</option><option>goodbye</option><option>welcome</option></select>'
    

    However, you have coded this so that every <select> will have the same id inputGroupSelect01. You will need to change this so that every one has a different id, since duplicate ids are not allowed.