DataTable拆分成2个DataTable分别绑定到GridView的问题,求进。。。

shi254927174 2012-04-27 10:16:51
页面上有两个GridView:gv1,gv2
现在有一个DataTable:dt

需求是dt里每隔4条数据分别绑定到gv1和gv2

比如:dt现在有13条数据,那gv1绑定其中的1,2,3,4,9,10,11,12 gv2绑定5,6,7,8,13

不知道我表达清楚没。。。
...全文
251 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
anzhiqiang_touzi 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
我的想法和1楼差不多 方法大概这样子

C# code


public DataTable tableda1()
{
DataTable da = new DataTable();
da.Columns.Add("ID");
return da;
}
public Dat……
[/Quote]
全局变量 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:

创建两个 DataTable 做中间载体。
DataTable dt1= myTable.Clone();//复制结构
DataTable dt2= myTable.Clone();
在分别
DataRow row =dt1.NewRow();
row["xxxx"]=xxx;
dt1.Rows.Add(row);
绑定到指定

方法二
Dat……
[/Quote]
我也是举例,你肯定要通过算法函数来获取 你的ID集。
_萧萧 2012-04-27
  • 打赏
  • 举报
回复
上面的代码 有些地方写错了点 自己注意下
_萧萧 2012-04-27
  • 打赏
  • 举报
回复
我的想法和1楼差不多 方法大概这样子

public DataTable tableda1()
{
DataTable da = new DataTable();
da.Columns.Add("ID");
return da;
}
public DataTable tableda2()
{
DataTable da = new DataTable();
da.Columns.Add("ID");
return da;
}

public vid ID()
{
string strSql = "";
DataSet ds =数据库操作;
DataTable dt1 = tableda1();
DataTable dt2 = tableda2();

for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
DataRow row1 = dt1.NewRow();
DataRow row2 = dt2.NewRow();

if (判断dt1,dt2里面行数)
{
row["ID"] = ds.Tables[0].Rows[i]["ID"] ;
}
else
{
row["ID"] =;
}
dt1.Rows.Add(row1);
dt2.Rows.Add(row2);

}
}
shi254927174 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

创建两个 DataTable 做中间载体。
DataTable dt1= myTable.Clone();//复制结构
DataTable dt2= myTable.Clone();
在分别
DataRow row =dt1.NewRow();
row["xxxx"]=xxx;
dt1.Rows.Add(row);
绑定到指定

方法二
DataTable 数据过滤
……
[/Quote]

方法2里面的,不知道dt有多少条数据,dt是变化的,关键是每隔4条数据这里 那个1,2,3,4,9,10,11,12只是举个例子
shi254927174 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

表达清楚了啊

你可以定义两个datatable
将datatable做循环,for 数据的index,循环生成两个datatable,然后绑定哈
[/Quote]

没想到具体怎么写,能不能写个大概的写法。。
全局变量 2012-04-27
  • 打赏
  • 举报
回复
创建两个 DataTable 做中间载体。
DataTable dt1= myTable.Clone();//复制结构
DataTable dt2= myTable.Clone();
在分别
DataRow row =dt1.NewRow();
row["xxxx"]=xxx;
dt1.Rows.Add(row);
绑定到指定

方法二
DataTable 数据过滤
DataRow[] ttRow = dt.Select(" id in(1,2,3,4,9,10,11,12) ");
在绑定到 gv1 gv2

OK 还有什么不明白的么?
generhappy 2012-04-27
  • 打赏
  • 举报
回复
表达清楚了啊

你可以定义两个datatable
将datatable做循环,for 数据的index,循环生成两个datatable,然后绑定哈
shi254927174 2012-04-27
  • 打赏
  • 举报
回复
谢谢大家,结贴了
happytonice 2012-04-27
  • 打赏
  • 举报
回复
上面有的小错误。

sql 语句中加一个辅助字段,比如:string strSQL = "select *, '1' as contract from myTable ";

DataTable dt = new DataTable();
dt=GetTable(strSQL); //这里取到table

for (int i = 0; i < dt.Rows.Count;i++ )
{
if ( (i+1) % 5 == 0)
{
dt.Rows[i]["contract"] = "0";
}
}

DataView myDataView = dt.DefaultView;
myDataView.RowFilter = "contract=0"; //过滤条件

GridView1.DataSource = myDataView;
GridView1.DataBind();

myDataView.RowFilter = "contract=1"; //过滤条件
GridView2.DataSource = myDataView;
GridView2.DataBind();
happytonice 2012-04-27
  • 打赏
  • 举报
回复
sql 语句中加一个辅助字段,比如:string strSQL = "select *, '1' as contract from myTable] ";

DataTable dt = new DataTable();
dt=GetTable(strSQL); //这里取到table

for (int i = 0; i < dt.Rows.Count;i++ )
{
if ( (i+1) % 5 == 0)
{
dt.Rows[i]["contract"] = "0";
}
}

DataView myDataView = dt.DefaultView;
myDataView.RowFilter = "contract=0"; //过滤条件

GridView1.DataSource = myDataView;
GridView1.DataBind();

myDataView.RowFilter = "contract=0"; //过滤条件
GridView2.DataSource = myDataView;
GridView2.DataBind();
孟子E章 2012-04-27
  • 打赏
  • 举报
回复
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
System.Data.DataTable dt = new System.Data.DataTable();
if (!Page.IsPostBack)
{
dt.Columns.Add(new System.Data.DataColumn("id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
System.Random rd = new System.Random();
for (int i = 1; i < 14; i++)
{
dt.Rows.Add(new Object[] { i, "孟" + i.ToString() });
}
System.Data.DataView dv = dt.DefaultView;
dv.RowFilter = "(id-1)%8 < 4 ";
GridView1.DataSource = dt;
GridView1.DataBind();

dv.RowFilter = "(id-1)%8 >= 4 ";
GridView2.DataSource = dt;
GridView2.DataBind();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<table cellspacing="10">
<tr valign="top"><td>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</td><td>
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
</td></tr>
</table>
</form>
</body>
</html>
  • 打赏
  • 举报
回复
加一个自动编号id(从零开始)就很好办了
private void bind()
{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("txt", typeof(string));
for (int i = 0; i < 100; i++)
{
dt.Rows.Add();
dt.Rows[i]["id"] = i;
dt.Rows[i]["txt"] = i.ToString();
}
DataView myDataView = dt.DefaultView;
myDataView.RowFilter = "id%8<4"; //过滤条件
GridView1.DataSource = myDataView;
GridView1.DataBind();
myDataView.RowFilter = "id%8>=4"; //过滤条件
GridView2.DataSource = myDataView;
GridView2.DataBind();
}
孟子E章 2012-04-27
  • 打赏
  • 举报
回复
若id连续,这样是可以的,
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
System.Data.DataTable dt = new System.Data.DataTable();
if (!Page.IsPostBack)
{
dt.Columns.Add(new System.Data.DataColumn("id", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
System.Random rd = new System.Random();
for (int i = 1; i < 22; i++)
{
dt.Rows.Add(new Object[] { i, "孟" + i.ToString() });
}
System.Data.DataView dv = dt.DefaultView;
dv.RowFilter = "(id-1)%8 < 4 ";
GridView1.DataSource = dt;
GridView1.DataBind();

dv.RowFilter = "(id-1)%8 >= 4 ";
GridView2.DataSource = dt;
GridView2.DataBind();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<table cellspacing="10">
<tr valign="top"><td>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</td><td>
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
</td></tr>
</table>
</form>
</body>
</html>


如果id不连续,你需要进行循环拆分
shi254927174 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

咦还有这种需求呀
[/Quote]
恩。。。
尼古拉特斯拉 2012-04-27
  • 打赏
  • 举报
回复
咦还有这种需求呀
shi254927174 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

GridView:gv1,gv2
现在有一个DataTable:dt

你不用拆分,直接使用
dt.DefaultView
即可

DataView myDataView = dt.DefaultView;
myDataView.RowFilter = "contract=false"; //过滤条件
gv1.DataSource = myDataView;
gv1.Da……
[/Quote]

现大牛,关键就是这里的过滤条件 每隔4条要怎么写的哈 实在想不出怎么写了
孟子E章 2012-04-27
  • 打赏
  • 举报
回复
GridView:gv1,gv2
现在有一个DataTable:dt

你不用拆分,直接使用
dt.DefaultView
即可

DataView myDataView = dt.DefaultView;
myDataView.RowFilter = "contract=false"; //过滤条件
gv1.DataSource = myDataView;
gv1.DataBind() ;

myDataView.RowFilter = "contract=true"
gv2.DataSource = myDataView
gv2.DataBind()

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧