Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将数据库单元格分布在同一html行+;是否每记录数跳到新行?_Asp.net_Listview_Data Binding_Gridview_Repeater - Fatal编程技术网

Asp.net 如何将数据库单元格分布在同一html行+;是否每记录数跳到新行?

Asp.net 如何将数据库单元格分布在同一html行+;是否每记录数跳到新行?,asp.net,listview,data-binding,gridview,repeater,Asp.net,Listview,Data Binding,Gridview,Repeater,我有一个数据库表包含ID和Name 在Default.aspx中,我只显示DB表中的名称单元格(列),这没什么大不了的 但是GridView会生成这样的html表(当然我删除了GridView标题): ------------ |名称1 | ------------ |名称2 | ------------ |名称3 | ------------ 我的问题 如何让上面的GridView: 1-将名称分散到1行? 2-每2条记录(每2个名称)跳到一个新行 我尝试过但失败了: 我试图用一个转发器代

我有一个
数据库表
包含
ID
Name

在Default.aspx中,我只显示DB表中的
名称
单元格(列),这没什么大不了的

但是GridView会生成这样的html表(当然我删除了GridView标题):
------------
|名称1 |
------------
|名称2 |
------------
|名称3 |
------------

我的问题 如何让上面的GridView:
1-将名称分散到
1行

2-每2条记录(每2个名称)跳到一个
新行


我尝试过但失败了:
  • 我试图用一个转发器代替GridView,我写了2个
    ,但不幸的是,正如你所看到的,虽然它会跳过每2个名称,但它会显示相同的名称(相同的记录)两次

  • 我还尝试将
    移动到HeaderTemplate和FooterTemplate,它现在确实在一行上显示了它们,但不幸的是,它没有每两个名称创建一个新行:

由于您只查找2,因此可以使用交替项目模板

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

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


您可能需要交换和标记

,因为您只查找2,所以可以使用交替项模板

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

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


您可能需要交换和标记,假设在将数据绑定到GridView之前,您的数据位于DataTable或DataReader中-您可以循环数据源并构建一个包含名称的3列新DataTable,然后将其绑定到网格

3的Psuedo示例:

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;
    }
}
DataTable dt=newdatatable();
dt.列。添加(“名称1”);
dt.列。添加(“名称2”);
dt.列。添加(“名称3”);
int指针=1;
数据行dr=null;

对于(int i=0;i假设在将数据绑定到GridView之前,您的数据位于DataTable或DataReader中-您可以循环数据源并构建一个包含3列的新DataTable,其中包含名称,然后将其绑定到网格

3的Psuedo示例:

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;
    }
}
DataTable dt=newdatatable();
dt.列。添加(“名称1”);
dt.列。添加(“名称2”);
dt.列。添加(“名称3”);
int指针=1;
数据行dr=null;

对于(int i=0;i如果您死心塌地地使用
中继器
,请查看此问题的第一个答案:

一种更简单的方法是使用
DataList
控件。它内置了使用以下两个属性跨行拆分项目的功能:

DataList1.RepeatColumns = 2;
DataList1.RepeatDirection = RepeatDirection.Horizontal;

如果您死心塌地地想使用
中继器
,请查看此问题的第一个答案:

一种更简单的方法是使用
DataList
控件。它内置了使用以下两个属性跨行拆分项目的功能:

DataList1.RepeatColumns = 2;
DataList1.RepeatDirection = RepeatDirection.Horizontal;

非常感谢,但是如果我需要移动到每3或4条记录的新行,该怎么办?在这种情况下,我无法使用交替项模板。请提供任何提示?非常感谢,但是如果我需要移动到每3或4条记录的新行,该怎么办?在这种情况下,我无法使用交替项模板。请提供任何提示?我目前不了解d我目前还在学习DataTable和DataReader的示例,但我相信其他人会发现它很有用。谢谢dave823。我目前不理解DataTable和DataReader的示例,因为我目前仍在学习,但我相信其他人会发现它很有用。谢谢dave823。恐怕该页中的第一个答案e看起来很模糊。但是数据列表的答案对新手来说很简单,而且做得很好。我知道,
DataList
不仅仅是给“新手”的。这是做你想做的事情的正确方法。在我看来,所有其他的答案都是“变通办法”做
数据列表
的设计目的。我担心该页面中的第一个答案看起来很模糊。但是数据列表的答案对于新手来说很简单,而且做得很好。我知道,
数据列表
不仅仅针对“新手”。这是完成您正试图完成的任务的正确方法。在我看来,所有其他答案都是“变通方法”,以完成
数据列表
的设计目的。