0

私はdatabase table含むIDとを持っていNameます。
Default.aspxNameでは、DB テーブルのセル (列) のみを表示しますが、これは大したことではありません。


しかし、GridView は次のようなhtmlテーブルを生成します (もちろん、gridview ヘッダーを削除しました)
。名前 1 |
------------
| 名前 2 |
------------
| 名前 3 |
------------

私の質問

上記の GridView:
1 - 名前を広げるにはどうすればよい1 rowですか?
2 - そしてnew row every 2 records(2 つの名前ごとに) にスキップしますか?


私が試して失敗したこと:

  • GridView の代わりにリピーターを使用しようとしましたが、 2 と書き<td>ましたが、残念ながら、ご覧のとおり、2 つの名前ごとにスキップされますが、同じ名前 (同じレコード) が 2 回表示されます。
<asp:Repeater ID="repeater1" runat="server" DataSourceID="AccessDataSource1">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <%# Eval("name")%>
            </td>
            <td>
                <%# Eval("name")%>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
  • <tr>また、HeaderTemplateと</tr>FooterTemplateに移動しようとしましたが、すべてが 1 行に表示されるようになりましたが、残念ながら 2 つの名前ごとに新しい行が作成されません。
<asp:Repeater ID="repeater1" runat="server" DataSourceID="AccessDataSource1">
   <HeaderTemplate>
        <table>
          <tr>
    </HeaderTemplate>
    <ItemTemplate>
           <td><%# Eval("name")%></td>
    </ItemTemplate>
    <FooterTemplate>
          </tr>
        </table>
    </FooterTemplate>
</asp:Repeater>
4

3 に答える 3

1

データをGridViewにバインドする前に、DataTableまたはDataReaderにデータがあると仮定します-データソースをループして、名前を保持する3つの列を持つ新しいDataTableを構築し、それをグリッドにバインドできます。

3の疑似例:

DataTable dt = new DataTable();
dt.columns.add("name1");
dt.columns.add("name2");
dt.columns.add("name3");

int pointer = 1;
DataRow dr = null;

for(int i=0;i<sourceTable;i++)
{
    if( pointer==1 )
    {
        dr = dt.newRow();
        dr["name1"] = sourceTable.Rows[i]["Name"];
        dt.Rows.Add(dr);
        pointer++;
    }
    else if( pointer==2)
    {
        dr["name2"] = sourceTable.Rows[i]["Name"];
        pointer++;
    }
    else
    {
        dr["name3"] = sourceTable.Rows[i]["Name"];
        pointer=1;
    }
}
于 2013-03-05T15:08:02.807 に答える
1

を使用することに夢中になっている場合はRepeater、この SO の質問に対する最初の回答を見てください。

リピーターで行ごとに x 個のアイテムを表示するにはどうすればよいですか?

はるかに単純なアプローチは、DataListコントロールを使用することです。次の 2 つのプロパティを使用して、項目を複数の行に分割する機能が組み込まれています。

DataList1.RepeatColumns = 2;
DataList1.RepeatDirection = RepeatDirection.Horizontal;
于 2013-03-05T15:22:19.650 に答える
1

探しているのは 2 つだけなので、代替アイテム テンプレートを使用できます。

      <AlternatingItemTemplate>
          <td>
            <%# Eval("name")%>
          </td>
        </tr>
      </AlternatingItemTemplate>

      <ItemTemplate>
        <tr>
          <td>
            <%# Eval("name")%>
          </td>
      </ItemTemplate>

<tr> タグと </tr> タグを交換する必要がある場合があります

于 2013-03-05T13:58:10.847 に答える