我寫了一個 javascript function , 應對你有用.
   function ScrollTable(grd,height,footer)
   {
   // Create elements
   if(document.getElementById(grd)==null)
     return;
   
   var tblHeader = document.getElementById(grd).cloneNode(false);
   var tblBody   = document.getElementById(grd).cloneNode(false);
   var tblfooter  = document.getElementById(grd).cloneNode(false);
   var divCntr   = document.createElement("DIV");
   
   tblHeader.removeAttribute("style");
   tblBody.removeAttribute("style"); 
   tblfooter.removeAttribute("style");  
 
   // Get column widths
   var rgWidths = new Array();
   for (var i = 0; i < document.getElementById(grd).rows[0].cells.length; i++)
   {
      rgWidths[i] = document.getElementById(grd).rows[0].cells[i].offsetWidth;
   }   // Add header row
   var tbdyHeader = document.createElement("TBODY");
   tblHeader.appendChild(tbdyHeader);
   tbdyHeader.appendChild(document.getElementById(grd).rows[0].cloneNode(true));
  
   
   if(footer==1)
   {
     var tbdyfooter = document.createElement("TBODY");
     tblfooter.appendChild(tbdyfooter);
     tbdyfooter.appendChild(document.getElementById(grd).rows[document.getElementById(grd).rows.length-1].cloneNode(true));
   }   // Add body rows
   var tbdyBody = document.createElement("TBODY");
   tblBody.appendChild(tbdyBody);
   
   for (var i = 1; i < document.getElementById(grd).rows.length-footer; i++)
   {
      var oRow = document.getElementById(grd).rows[i].cloneNode(true);
      tbdyBody.appendChild(oRow);
   }
    
   // Set up body container
   divCntr.style.overflow = "auto";
   divCntr.style.overflowY="scroll";
   divCntr.style.height = height;
   divCntr.appendChild(tblBody);
 
   // Change existing table
   for (var i = document.getElementById(grd).rows.length; i >0; i--)
   {
      document.getElementById(grd).rows[i-1].removeNode(true);
   }
  
   var tr1 = document.getElementById(grd).insertRow();
   var td1 = tr1.insertCell();
   var tr2 = document.getElementById(grd).insertRow();
   var td2 = tr2.insertCell();
   td1.appendChild(tblHeader);
   td2.appendChild(divCntr);
   if(footer==1)
   {
     var tr3 = document.getElementById(grd).insertRow();
     var td3 = tr3.insertCell();
     td3.appendChild(tblfooter);
   }
   // Set column widths of all but the last column
   for (var i = 0; i < rgWidths.length-1 ; i++)
   {
      tblHeader.rows[0].cells[i].width = rgWidths[i];   
      if(tblBody.rows.length>0)
         tblBody.rows[0].cells[i].width   = rgWidths[i];
      if(tblfooter.rows.length>0)
         tblfooter.rows[0].cells[i].width   = rgWidths[i];
   }   tblHeader.style.fontSize    = "100%";
   tblHeader.width             = "100%";
   tblHeader.style.tableLayout = "fixed";
   tblHeader.border = 0;   tblBody.style.fontSize      = "100%";
   tblBody.width               = "100%";
   tblBody.style.tableLayout   = "fixed";
   tblBody.border = 0;
      
   if(footer==1)
   {
    tblfooter.style.fontSize      = "100%";
    tblfooter.style.width         = "100%"; 
    tblfooter.style.tableLayout   = "fixed";
   }
}

解决方案 »

  1.   

    谢谢AIRFLYNET(汪洋中的一条船),我还想问一下Datagrid有属性可以控制的吗?
      

  2.   

    加上这句即可
    datagrid1.Style.Add("TABLE-LAYOUT","fixed");
      

  3.   

    只要设定好其宽度,AutoGenerateColumns="False",应该不会吧。默认下会自动换行的。
    如果需要让某一列的宽度不变,可以这样:
    <asp:BoundColumn>
    <ItemStyle Width="100px"></ItemStyle>
    </asp:BoundColumn>
    则该列不会被挤憋。
      

  4.   

    谢谢各位,设了Width,现在解决了,呵呵