2009-08-04 9 views
0

Je voudrais étendre le contrôle Web ASP.NET DataGrid pour ajouter beaucoup de fonctionnalités supplémentaires, mais le plus important de tous, je voudrais faire défiler le corps de la grille.Extension DataGrid

J'ai le HTML élaboré mais le dépassement du rendu du contrôle est confus. La structure de base du contrôle final devrait ressembler à ceci:

<div id="grid1" class="grid"> 
<div class="grid-header"> 
    <div class="grid-header-l"></div> 
    <div class="grid-header-c"> 
     <div class="grid-header-wrapper"> 
      <div class="wrapper">Grid Header</div> 
     </div> 
    </div> 
    <div class="grid-header-r"></div> 
</div> 
<div class="grid-body"> 
    <div class="grid-column-headers"> 
     <div class="grid-column-headers-l"></div> 
     <div class="grid-column-headers-c"> 
      <div class="grid-column-headers-wrapper"> 
       <table class="grid-column-header-table" cellpadding="0" cellspacing="0" border="0"> 
        <tbody> 
         <tr> 
          <td> 
           <div class="grid-column-header-cell asc"> 
            <div class="grid-column-header-cell-wrapper"> 
             <div class="grid-column-header-text" title="Column Header Name">Column Header Name</div> 
             <a href="javascript:;" class="grid-column-header-button" title="Hide/Show Columns"><span></span></a> 
             <div class="grid-column-header-divider"></div> 
            </div> 
           </div> 
          </td> 
          <td> 
           <div class="grid-column-header-cell"> 
            <div class="grid-column-header-cell-wrapper"> 
             <div class="grid-column-header-text" title="Column Header Name">Column Header Name</div> 
             <a href="javascript:;" class="grid-column-header-button" title="Hide/Show Columns"><span></span></a> 
             <div class="grid-column-header-divider"></div> 
            </div> 
           </div> 
          </td> 
          <td class="last"> 
           <div class="grid-column-header-cell"> 
            <div class="grid-column-header-cell-wrapper"> 
             <div class="grid-column-header-text" title="Column Header Name">Column Header Name</div> 
             <a href="javascript:;" class="grid-column-header-button" title="Hide/Show Columns"><span></span></a> 
             <div class="grid-column-header-divider"></div> 
            </div> 
           </div> 
          </td> 
         </tr> 
        </tbody> 
       </table> 
      </div> 
     </div> 
     <div class="grid-column-headers-r"></div> 
    </div> 
    <div class="grid-body-content"> 
     <div class="grid-body-content-t"> 
      <div class="grid-body-content-t-l"></div> 
      <div class="grid-body-content-t-c"></div> 
      <div class="grid-body-content-t-r"></div> 
     </div> 
     <div class="grid-body-content-m"> 
      <div class="grid-body-content-m-l"></div> 
      <div class="grid-body-content-m-c"> 
       <div class="grid-body-content-wrapper"> 
        <div class="scroll-wrapper"> 
         <table class="grid-content-table" cellpadding="0" cellspacing="0" border="0"> 
          <tbody> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
           <tr> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
            <td> 
             <div class="grid-content-cell">Cell Text/Value</div> 
            </td> 
           </tr> 
          </tbody> 
         </table> 
        </div> 
       </div> 
      </div> 
      <div class="grid-body-content-m-r"></div> 
     </div> 
     <div class="grid-body-content-b"> 
      <div class="grid-body-content-b-l"></div> 
      <div class="grid-body-content-b-c"></div> 
      <div class="grid-body-content-b-r"></div> 
     </div> 
    </div> 
</div> 

Quelqu'un sait quelle est la meilleure approche devrait être? Quelqu'un peut-il me diriger vers un tutoriel? J'ai remarqué un où l'auteur a capturé le html rendu avant qu'il soit envoyé au flux de réponse et l'a changé. Je n'aime pas utiliser cette approche cependant.

Répondre

0

Parce que je voulais seulement modifier la sortie de la commande, 'étendre' le contrôle signifiait réellement que je devais seulement surcharger le rendu.

J'ai trouvé des articles sur les adaptateurs de contrôle que l'on peut utiliser pour modifier la sortie. Un projet existe sur CodePlex nommé 'CSS Control Adapters'. Il a été très utile sur plus de contrôles que le DataGrid.

1

Vous pouvez essayer l'approche this. Fonctionne bien pour moi.