所谓的折行是指:本来一行显示有10列,现在要求一行只显示7列,剩下的3列显示在下一行的后3列上,请问如何实现??
示例:
第一行1列 第一行2列 第一行3列 第一行4列 第一行5列 第一行6列 第一行7列
第一行8列 第一行9列 第一行10列
第二行1列 第二行2列 第二行3列 第二行4列 第二行5列 第二行6列 第二行7列
第二行8列 第二行9列 第二行10列
第三行1列 第三行2列 第三行3列 第三行4列 第三行5列 第三行6列 第三行7列
第三行8列 第三行9列 第三行10列
......
......
......(不要告诉我用其它控件,我就是要用GridView实现!)
示例:
第一行1列 第一行2列 第一行3列 第一行4列 第一行5列 第一行6列 第一行7列
第一行8列 第一行9列 第一行10列
第二行1列 第二行2列 第二行3列 第二行4列 第二行5列 第二行6列 第二行7列
第二行8列 第二行9列 第二行10列
第三行1列 第三行2列 第三行3列 第三行4列 第三行5列 第三行6列 第三行7列
第三行8列 第三行9列 第三行10列
......
......
......(不要告诉我用其它控件,我就是要用GridView实现!)
另外看您的需求,这样显示显然不是最好的效果。
最好就是一行仍然显示10列,超出的部分出现滚动条,拖动显示;允许拖动列宽,这样才完美。有那样的js表格,你找找看。
用手工把数据一行一行地填到gridview上,但我不知道如何为gridview插入一空行(而不是用数据绑定方式)。
<ItemStyle />
</asp:BoundField>看的明白吧,<HeaderStyle/>是设置模板的列头, Wrap="false"是不换行的意思,设为true就是换行的意思,默认是换行的,所以内容列<ItemStyle />没有设置,就是默认换行,假如有多列需要换行,最好设置一下内容列的With属性,用来控制每个列超过多大宽度才换行。在实际使用中,可以在调试状态,看一下需要换行的列是不是我们期望的宽度,假如太窄,那就要把Style="width:1600px;" 的值设置大一点。说明一点:在IE6,IE7,IE8中都可以换行,其他浏览器没测试。对于中文和英文句子,可以正常换行,但是对于长串英文字符,会被认为是一个英文单词,IE8不会将它换行,IE7,IE6会换行
1.就是把要折行的三个字段在一个GridView 模板里再写一个控件来绑定2.就是把要折行的列写个css,给模板添个cssClass来控制
string sno = ((TextBox)this.myGrid.Rows[e.RowIndex].Cells[2].Controls[0]).Text.Trim();
string sname = ((TextBox)this.myGrid.Rows[e.RowIndex].Cells[3].Controls[0]).Text.Trim();
string spic = ((TextBox)this.myGrid.Rows[e.RowIndex].Cells[4].Controls[0]).Text.Trim();这个就是将GridView分成一行4个格,如果还想分,在像这样写就可以了!
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
DataSourceID="SqlDataSource1" BorderStyle="Dashed" Width="100%" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table style="width: 100%" border="1" CellPadding="1" CellSpacing="1">
<tr>
<td style="width:100px;">
<%# Eval("ProductID") %>
</td>
<td style="width:100px;">
<%# Eval("ProductName") %>
</td>
<td style="width:100px;">
<%# Eval("SupplierID") %>
</td>
<td style="width:100px;">
<%# Eval("CategoryID") %>
</td>
<td style="width:200px;">
<%# Eval("QuantityPerUnit") %>
</td>
<td style="width:200px;">
<%# Eval("UnitPrice") %>
</td>
<td style="width:200px;">
<%# Eval("UnitsInStock") %>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
<%# Eval("UnitsOnOrder") %>
</td>
<td>
<%# Eval("ReorderLevel") %>
</td>
<td>
<%# Eval("Discontinued") %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
DataSourceID="SqlDataSource1" BorderStyle="Dashed" Width="100%" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table style="width: 100%" border="1" CellPadding="1" CellSpacing="1">
<tr>
<td style="width:100px;">
<%# Eval("ProductID") %>
</td>
<td style="width:100px;">
<%# Eval("ProductName") %>
</td>
<td style="width:100px;">
<%# Eval("SupplierID") %>
</td>
<td style="width:100px;">
<%# Eval("CategoryID") %>
</td>
<td style="width:200px;">
<%# Eval("QuantityPerUnit") %>
</td>
<td style="width:200px;">
<%# Eval("UnitPrice") %>
</td>
<td style="width:200px;">
<%# Eval("UnitsInStock") %>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
</td>
<td>
<%# Eval("UnitsOnOrder") %>
</td>
<td>
<%# Eval("ReorderLevel") %>
</td>
<td>
<%# Eval("Discontinued") %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT * FROM [Alphabetical list of products]"></asp:SqlDataSource>
有没有不用table的,就是手工增加一空白行,填入数据(比如7个字段值),再加一空白行填入折回行的数据(即剩下的3个字段值),这样就完成了第一条记录的填充,以此类推再填入第二条记录.....
我给你的当然只是一个思路,你不用table,可以用div,如果没对齐,当然可以调CSS
你甚至可以不用gridview,而像你说的直接循环添加,因为gridview解释到页面,源代码它就是一个table形式是多样的,功能实现也是,看你自己拿手哪个,想做什么样的效果了
一样 你吧table换成<ul><li>也行啊