Проблема с вставкой динамически сгенерированной таблицы в div - PullRequest
0 голосов
/ 30 декабря 2011

Я динамически генерирую строки таблицы по полученному ответу ajax. Заголовки таблицы являются статическими / постоянными. Я наконец пишу это в div на странице.

В div есть горизонтальная и вертикальная прокрутка. Моя проблема заключается в следующем: если, скажем, у меня есть 100 строк, я не вижу заголовки / столбцы таблицы. Я хочу сделать это как стоп-кадр в Excel, где вы можете увидеть заголовки / столбцы.

Я попытался отделить заголовки / столбцы от строк, но проблема, с которой я сталкиваюсь, является широкой, то есть размер строки td не соответствует заголовкам. Вот мой код (пример кода):

Я хочу, чтобы он работал в IE7 и Firefox.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> Some Page </title>
       <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
     </head>

     <body>
      <div id="dataDiv" style="white-space:nowrap; overflow-y:scroll; height:330px;overflow: scrollbars-vertical;overflow-x:scroll; width:100%;overflow: scrollbars-horizontal;">
     </body>
    </html>


    <script>


    function ProcessResponse(ajaxResponseData) 
    {

        var dataList = ajaxResponseData.somDataList;



        if(dataList != null)
        {

            var rowData = "<table border='1'  width=1200px>";
            rowData += "<tr>"           
                + "<td colspan='6'><b>Header1</b></td>"
                + "<td colspan='4'><b>Header2</b></td>"
                + "<td colspan='4'><b>Header3</b></td>"
                + "<td colspan='4'><b>Header4</b></td>"
                + "<td colspan='4'><b>Header5</b></td>"
                + "<td colspan='4'><b>Header6</b></td>"
                + "<td colspan='4'><b>Header7</b></td>"
                + "<td colspan='4'><b>Header8</b></td>"
                + "<td colspan='4'><b>Header9</b></td>"
                + "<td colspan='4'><b>Header10</b></td>"
                + "<td colspan='4'><b>Header11</b></td>"
                + "<td colspan='4'><b>Header12</b></td>"
                + "<td colspan='4'><b>Header13</b></td>"
                +"</tr>";




            for(var i=0;i<dataList.length;i++)
            {
                var someRowData=new Object();
                someRowData = dataList[i];


                rowData+="<tr>"             
                +"<td colspan='6'>"
                +someRowData.Header1_data+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
                +"</td><td colspan='4'>"
                +someRowData.Header2_data
                +"</td><td colspan='4'>"
                +someRowData.Header3_data
                +"</td><td colspan='4'>"
                +someRowData.Header4_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header5_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header6_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header7_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header8_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header9_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header10_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header11_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header12_data
                +"</td>" 
                +"</td><td colspan='4'>"
                +someRowData.Header13_data  
                +"</tr>";
            }
            rowData+="</table>";


            var dataDiv=document.getElementbyId("dataDiv");

            if(dataList.length == 0)
            {

                dataDiv.innerHTML="";
            }   
            else    
            {           
                dataDiv.innerHTML=rowData;
            }   

        }

    }
    </script>

Пожалуйста, помогите. Ваша помощь будет оценена. Спасибо

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Что вам нужно сделать, это установить overflow: auto; для элемента tbody, а не для div (и сохранить элементы th в элементе thead). Это не будет работать (без некоторой настройки / взлома) ни в чем, кроме Firefox (может быть, Opera тоже - не уверен). Проверьте предоставленную ссылку @smnbss, и вам, вероятно, следует ее решить. Самая большая проблема заключается в том, что вам нужно установить фиксированную ширину для всех ваших ячеек, если вы хотите, чтобы она работала во всех браузерах.

0 голосов
/ 30 декабря 2011

Вы должны немного поиграть с CSS

посмотрите на это:

http://www.imaputz.com/cssStuff/bigFourVersion.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...