在线等待,在GridView中如何让一条记录按多行显示 要求数据表的一条记录对应成GridView的两行,例如姓名 年龄 照片性别 出生年月 小王 20男 1986小张 21男 1985请问改如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用itemtemplate,小王 20男 1986每一条数据对应一个table不就可以了 GridView是动态绑定的,各个列需要动态生成现在的做法如下:BindGridView(){ TemplateField f1 = new TemplateField(); f1.ItemTemplate = new MultiRowsTemplateRow(); gridView1.Columns.Add(f1); gridView1.DataSource = ds; gridView1.DataBind();}class MultiRowsTemplateRow : ITemplate{ public void InstantiateIn(Container container) { Label lblBr = new Label(); lblBr.Text = "<br>"; Label lblName1 = new Label(); lblName1.Text = "xiao"; Label lblName2 = new Label(); lblName2.Text = "wang"; container.Controls.Add(lblName1); container.Controls.Add(lblBr); container.Controls.Add(lblName2); }}这种方法Label不是从数据库里面取的,怎样实现跟数据源的绑定?是不是可以用TemplateField里面放两个BoundField来实现? jsyhello(不认输):现在程序已经用GridView做了,用别的,改动太大xyunsh(学海无涯,回头是岸) 能说清楚一点吗?GridView各列是动态生成的 把你做的各个列都转换成模版列然后和DataList中的做法是一样的 能具体一点吗DataList没有用过 可以将datagrid设一个模板列,模板列中插入table,table中再插入label,在datagrid的itemdatabind中设置label的text就行了 是不是想实现以下样式的啊?----------------------------------------------- 姓名 | 年龄 | 照片 性别 | 出生年月 |----------------------------------------------- 姓名 | 年龄 | 照---------------------------------| 性别 | 年月 | 片----------------------------------------------- 姓名 | 年龄 | 照---------------------------------| 性别 | 年月 | 片-----------------------------------------------.....如果是,那你应该可以用GridView的模板列来做只要修改.aspx中的模板就可以了,具体的你去找找帮助,有很详细的使用说明,这不赘述但看你的样子是在后台处理过再输出的这样的话,你可以尝试构建一个Table对象(System.Web.UI.HtmlControls.HtmlTable)你构建好一个类似上面的行列,将你需要的值填充好直接输出,应该能够达到你的要求 模版列可以定义任何行数<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"><Columns><asp:TemplateField> <HeaderTemplate> <input type="checkbox" onclick="SelAll()" /></HeaderTemplate> <ItemTemplate> <input type="checkbox" name="guid" value="<%#Eval("ExpertID") %>" /> </ItemTemplate></asp:TemplateField><asp:BoundField HeaderText="专家名称" DataField="DisplayName" /><asp:BoundField HeaderText="专家介绍" DataField="Description" /><asp:TemplateField> <ItemTemplate> <table width="100%" border="1"> <tr> <td> <%#Eval("DisplayName") %> </td> <td> <%#Eval("DisplayName") %> </td> <td rowspan="2"> <%#Eval("DisplayName") %> </td> </tr> <tr> <td> <%#Eval("DisplayName") %> </td> <td> <%#Eval("DisplayName") %> </td> </tr> </table> </ItemTemplate></asp:TemplateField></Columns></asp:GridView> to mistysunlight(飘渺日光) 是的,ItemTemplate是要在后台构建的,以为ItemTemplate的内容不是固定的,有好几种类型你的意思是不用GridView吗 ------------------------------------------我再说一下我的问题吧现在TemplateField需要在后台生成(因为TemplateField里面的列不是固定的,有多种类型)怎么在后台绑定TemplateField的列到数据表的字段我知道BoundField绑定很简单,直接BoundField field = new BoundField()field.DataField = "name";gridView1.Columns.Add(field);就可以了TemplateField该怎么做?------------------------------------------ Entity Framework 映射片段出现问题 IE6出现布局错乱??? 请教ASP.NET中,连接ACCESS数据库的相对路径问题 WEB-BASE体系结构的数据库应用系统?这是一个什么概念? 信任等级的问题 一个登录后的问题!! 帮忙看一下,为什么老报引用不存在应很简单 如何在ASP中对数据库进行多语句操作?(详解)高手进 关于一个DATALIST的绑定问题,高手进!!!!!!! 关于大文件上传的问题~~~~~??? 帮帮忙看看!!! Jmail群发邮件
男 1986每一条数据对应一个table不就可以了
现在的做法如下:
BindGridView()
{
TemplateField f1 = new TemplateField();
f1.ItemTemplate = new MultiRowsTemplateRow();
gridView1.Columns.Add(f1); gridView1.DataSource = ds;
gridView1.DataBind();
}class MultiRowsTemplateRow : ITemplate
{
public void InstantiateIn(Container container)
{
Label lblBr = new Label();
lblBr.Text = "<br>";
Label lblName1 = new Label();
lblName1.Text = "xiao";
Label lblName2 = new Label();
lblName2.Text = "wang"; container.Controls.Add(lblName1);
container.Controls.Add(lblBr);
container.Controls.Add(lblName2);
}}这种方法Label不是从数据库里面取的,怎样实现跟数据源的绑定?
是不是可以用TemplateField里面放两个BoundField来实现?
现在程序已经用GridView做了,用别的,改动太大xyunsh(学海无涯,回头是岸)
能说清楚一点吗?GridView各列是动态生成的
然后和DataList中的做法是一样的
DataList没有用过
-----------------------------------------------
姓名 | 年龄 | 照片
性别 | 出生年月 |
-----------------------------------------------
姓名 | 年龄 | 照
---------------------------------|
性别 | 年月 | 片
-----------------------------------------------
姓名 | 年龄 | 照
---------------------------------|
性别 | 年月 | 片
-----------------------------------------------
.....
如果是,那你应该可以用GridView的模板列来做
只要修改.aspx中的模板就可以了,具体的你去找找帮助,有很详细的使用说明,这不赘述但看你的样子是在后台处理过再输出的
这样的话,你可以尝试构建一个Table对象(System.Web.UI.HtmlControls.HtmlTable)
你构建好一个类似上面的行列,将你需要的值填充好
直接输出,应该能够达到你的要求
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<input type="checkbox" onclick="SelAll()" /></HeaderTemplate>
<ItemTemplate>
<input type="checkbox" name="guid" value="<%#Eval("ExpertID") %>" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="专家名称" DataField="DisplayName" />
<asp:BoundField HeaderText="专家介绍" DataField="Description" />
<asp:TemplateField>
<ItemTemplate>
<table width="100%" border="1">
<tr>
<td>
<%#Eval("DisplayName") %>
</td>
<td>
<%#Eval("DisplayName") %>
</td>
<td rowspan="2">
<%#Eval("DisplayName") %>
</td>
</tr>
<tr>
<td>
<%#Eval("DisplayName") %>
</td>
<td>
<%#Eval("DisplayName") %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
你的意思是不用GridView吗
我再说一下我的问题吧
现在TemplateField需要在后台生成(因为TemplateField里面的列不是固定的,有多种类型)
怎么在后台绑定TemplateField的列到数据表的字段
我知道BoundField绑定很简单,
直接BoundField field = new BoundField()
field.DataField = "name";
gridView1.Columns.Add(field);就可以了TemplateField该怎么做?------------------------------------------