2

これは奇妙で単純な質問だと思います。グリッドを構成する HTML (テーブルと行) があります。結果のグリッドが HTML とまったく同じように見えるようにする必要があり、データはDataTable.

どうすればいいですか?HTML を に置き換えると、GridView必要な外観とは異なる結果になります。テーブルと行を出力するカスタム グリッド クラスを作成する必要がありますか?

明確にするために:私はHTMLグリッドを与えられました...

<div>
    <table>
        <tr>
            <td>row 1 col 1</td>
            <td>row 1 col 2</td>
        </tr>
        <tr>
            <td>row 2 col 1</td>
            <td>row 2 col 2</td>
        </tr>
    </table>
</div>

...テーブルからデータを入力し、元の HTML を保持する必要があります。

4

3 に答える 3

4

ASP.Net データバインディング機能を使用する場合は、Repeaterを使用してください。マークアップは次のようになります。

<table>
    <thead>
         <tr>
             <th>Heading</th>
         </tr>
    </thead>
    <tbody>
         <asp:Repeater runat="server">
             <ItemTemplate>
                 <tr>
                     <td><%# Eval("SomeFieldName") %></td>
                 </tr>
             </ItemTemplate>
         </asp:Repeater>
    </tbody>
</table>

テーブル/行/セル オブジェクトをインスタンス化し、それらをページ、コントロール、または親コンテナー コントロールのコントロール コレクションに追加することにより、コード ビハインドで手動でマークアップを作成することもできます。これには時間がかかる傾向がありますが、リピーターで表現するのが容易ではない非常に動的なコンテンツが必要な場合など、場合によっては有効なオプションです。

3 番目のオプションは、サーバー マークアップとクライアント マークアップを混在させることです。

<table>
    <thead>
         <tr>
             <th>Heading</th>
         </tr>
    </thead>
    <tbody>
         <% foreach( var obj in someCollection ){ %>
             <tr>
                 <td><%= obj.Property %></td>
             </tr>
         <% } %>
    </tbody>
</table>

最後のオプションは、ASP.Net MVC ビューで使用されるRazor構文と非常によく似ています (より冗長ではありますが) 。

于 2013-01-08T18:37:07.143 に答える
1

そのための最善の策はリピーターになると思います。以下のリンク。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater(v=vs.100).aspx

于 2013-01-08T18:09:13.447 に答える
0

もう 1 つのオプションは、ListView を HTML テーブルのセットアップと共に LayoutTemplate として使用することです。

簡単な例:

      <asp:ListView ID="MyListView" runat="server">                                        
            <LayoutTemplate>                                        
                <table id="Table1" cellpadding="1" width="100%" runat="server">                                        
                    <tr id="Tr1" runat="server">                                        
                        <th id="Th1" style="font-weight: bold; text-align: left" runat="server">                                        
                           Header1                                        
                        </th>                                        
                        <th id="Th2" style="font-weight: bold; text-align: left" runat="server">                                        
                            Header2                                         
                        </th>                                                                                                            
                    </tr>                                        
                    <tr runat="server" id="itemPlaceholder" />                                        
                </table>                                        
            </LayoutTemplate>                                        
            <ItemTemplate>                                        
                <tr id="Tr2" runat="server">                                        
                    <td style="text-align: left">                                        
                        <%# Eval("Field1")%>                                        
                    </td>                                        
                    <td style="text-align: left">                                        

                         <%# Eval("Field2")%>                                        
                    </td>                                      

                </tr>
            </ItemTemplate>
        </asp:ListView>
于 2013-01-08T23:11:35.347 に答える