我希望了解如何在我的gridview中将结果分开,如下所示(请运行代码段以查看我想要的结果)。
我正在添加如下的gridview。
<asp:GridView ID="gv" runat="server" CssClass="gvadmin" PageSize="19" AllowPaging="true" OnPageIndexChanging="gv_PageChanging" AutoGenerateSelectButton="true" AutoGenerateEditButton="true" OnRowEditing="gv_RowEdit" OnSelectedIndexChanged="gv_SelectChanged" />
从类中存储的sql连接填充gridview。
gv.DataSource = c.sqldt
gv.DataBind()
这填充gridview没有问题,但我不知道如何添加该类型的子标头。我以前见过其他人这样做,但我不知道怎么做。
<table border="1">
<tr>
<td>ID</td>
<td>type</td>
<td>name</td>
</tr>
<tr>
<td>Person</td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td>person</td>
<td>John</td>
</tr>
<tr>
<td>2</td>
<td>person</td>
<td>Amy</td>
</tr>
<tr>
<td>animal</td>
<td></td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>animal</td>
<td>Max</td>
</tr>
<tr>
<td>4</td>
<td>animal</td>
<td>fifi</td>
</tr>
</table>
我想要每种类型的标题。
数据将是sql驱动的,所以使用sql查询,我没有问题将数据获取到gridview但我如何添加“类型”标题来分解它们。
我已尝试将以下几个数据表用于1个数据集,但无法使其正常工作。
Dim sqlstr As String = "select distinct(type) from typestbl order by type"
Dim sqlstr2 As String = "select Names,Age from Typestbl order by names where type = @type"
Dim i As Integer = 0
s.FillDS(sqlstr)
For Each row As DataRow In s.sqldt.Rows
dt = New DataTable
dt.Columns.Add("Names")
dt.Columns.Add("Age")
Dim r As DataRow = dt.NewRow
r("Names") = row.Item(0).ToString
r("Age") = ""
dt.Rows.Add(r)
ds.Merge(dt)
s.FillDS2()
ds.Merge(s.sqldt2)
Next
gv.DataSource = ds
gv.DataBind()
答案 0 :(得分:2)
请检查一下。
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
SqlCommand cmd = new SqlCommand("Select Queueid,queueitem,queuedata,itemgrouptype,itemgroup from queueitems order by itemgrouptype,itemgroup", con);
DataSet ds = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(ds);
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
string first = "";
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
if (ds.Tables[0].Rows[i][3].ToString() != first)
{
DataRow dr = ds.Tables[0].NewRow();
dr[0] = ds.Tables[0].Rows[i][3].ToString();
first = ds.Tables[0].Rows[i][3].ToString();
ds.Tables[0].Rows.InsertAt(dr, i);
}
}
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();