下面是一个示例图:在DATAGRID中使用分类标题
既有两个表,其中一个是大类表,还有一个是小类表。比如在使用ms sql server的Northwind数据库时,在product产品表中,每一个产品都是属于一个类别,这些类别在category表中定义。那么我们可以按照category表中类别的顺序,在DATAGRID中显示每个类别有哪些产品。
在这个DATAGRID中,蓝色的行标题是一个分类标题,分类标题以下的就是该分类下的所有代管人员了。
首先:建立一个--DataGrid--
在DATAGRID中使用分类标题<asp:DataGrid id="dg_CusInfo" runat="server" CssClass="GbText" BorderColor="#CCCCCC" BorderStyle="None"
在DATAGRID中使用分类标题                                    BorderWidth
="1px" BackColor="White" CellPadding="3" AutoGenerateColumns="False" Width="100%"
在DATAGRID中使用分类标题                                    DataKeyField
="EmpTypeID">
在DATAGRID中使用分类标题                                    
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
在DATAGRID中使用分类标题                                    
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
在DATAGRID中使用分类标题                                    
<ItemStyle ForeColor="#000066"></ItemStyle>
在DATAGRID中使用分类标题                                    
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
在DATAGRID中使用分类标题                                    
<Columns>
在DATAGRID中使用分类标题                                        
<asp:BoundColumn DataField="EmpTypeName" HeaderText="代管人员"></asp:BoundColumn>
在DATAGRID中使用分类标题                                        
<asp:BoundColumn DataField="EmpTypeKinds" HeaderText="类 型">
在DATAGRID中使用分类标题                                            
<HeaderStyle HorizontalAlign="Center" Width="10%"></HeaderStyle>
在DATAGRID中使用分类标题                                            
<ItemStyle HorizontalAlign="Center"></ItemStyle>
在DATAGRID中使用分类标题                                        
</asp:BoundColumn>
在DATAGRID中使用分类标题                                        
<asp:BoundColumn DataField="CreateDate" HeaderText="创建时间" DataFormatString="{0:yyyy-MM-dd}">
在DATAGRID中使用分类标题                                            
<HeaderStyle HorizontalAlign="Center" Width="12%"></HeaderStyle>
在DATAGRID中使用分类标题                                            
<ItemStyle HorizontalAlign="Center"></ItemStyle>
在DATAGRID中使用分类标题                                        
</asp:BoundColumn>
在DATAGRID中使用分类标题                                        
<asp:TemplateColumn ItemStyle-HorizontalAlign="Center">
在DATAGRID中使用分类标题                                            
<HeaderStyle HorizontalAlign="Center" Width="5%"></HeaderStyle>
在DATAGRID中使用分类标题                                            
<ItemTemplate>
在DATAGRID中使用分类标题                                                
<asp:LinkButton runat="server" Text="进入" CommandName="" CausesValidation="false" CssClass="buttoncss"></asp:LinkButton>
在DATAGRID中使用分类标题                                            
</ItemTemplate>
在DATAGRID中使用分类标题                                        
</asp:TemplateColumn>
在DATAGRID中使用分类标题                                    
</Columns>
在DATAGRID中使用分类标题                                    
<PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
在DATAGRID中使用分类标题                                
</asp:DataGrid>

然后信息绑定 到DataGrid中

在DATAGRID中使用分类标题        public void CusInfoBind()
{
在DATAGRID中使用分类标题            
string ID=Session["userid"].ToString();
在DATAGRID中使用分类标题            
string type=Session["type"].ToString();
在DATAGRID中使用分类标题            
string strSQL = "select EmpTypeName,EmpTypeID,EmpTypeKinds,CreateDate,NameChina from Cus_EmpTypeInfo,CustomerInfo where CusID=CustomerID order by Cus_EmpTypeInfo.CusID";

在DATAGRID中使用分类标题            
DbTools db = new DbTools(); //建立数据库连接对象;
在DATAGRID中使用分类标题
            DataSet ds = new DataSet();
在DATAGRID中使用分类标题            
 db.DataSetResult(strSQL,par);
在DATAGRID中使用分类标题            
string curCat;//指示当前记录中产品所属的类别
在DATAGRID中使用分类标题
            string prevCat = null;//指示上一条记录中产品所属的类别
在DATAGRID中使用分类标题
            int i = 0;
在DATAGRID中使用分类标题
在DATAGRID中使用分类标题            
//遍历结果集,找出要插入分类标题的行
在DATAGRID中使用分类标题
            while ( i<= ds.Tables[0].Rows.Count-1 )
{
在DATAGRID中使用分类标题                curCat 
= ds.Tables[0].Rows[i]["NameChina"].ToString();
在DATAGRID中使用分类标题                
if ( curCat != prevCat)

在DATAGRID中使用分类标题
                    prevCat = curCat;
在DATAGRID中使用分类标题                    DataRow shRow 
= ds.Tables[0].NewRow();
在DATAGRID中使用分类标题                    shRow["EmpTypeName"= ds.Tables[0].Rows[i]["NameChina"].ToString();//修改行的标题为分类标题名
在DATAGRID中使用分类标题
                    shRow["EmpTypeKinds"= "SubHead";
//设置一个临时的标记,为判断合并作准备
在DATAGRID中使用分类标题
                    shRow["CreateDate"= "1900-1-1";
在DATAGRID中使用分类标题                    shRow[
"EmpTypeID"= 1;
在DATAGRID中使用分类标题                    ds.Tables[
0].Rows.InsertAt(shRow,i);//插入新的分类标题行
在DATAGRID中使用分类标题
                    i += 1;
在DATAGRID中使用分类标题                }

在DATAGRID中使用分类标题                i 
+= 1;
在DATAGRID中使用分类标题            }

在DATAGRID中使用分类标题            
this.dg_CusInfo.DataSource = ds;
在DATAGRID中使用分类标题            
this.dg_CusInfo.DataBind();
在DATAGRID中使用分类标题            db.Close();
在DATAGRID中使用分类标题        }

在DATAGRID中使用分类标题        
#endregion
shRow("UnitPrice") = "SubHead",是为了在item_bound事件中判定是否要合并整个行!

其item_bound事件中

在DATAGRID中使用分类标题        private void dg_CusInfo_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
在DATAGRID中使用分类标题            
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
在DATAGRID中使用分类标题                 
  if ( e.Item.Cells[1].Text.Equals("SubHead"))

在DATAGRID中使用分类标题
                    e.Item.Cells[0].ColumnSpan = 4;
在DATAGRID中使用分类标题                    
//合拼为一个新的分类标题行,移除其中的单元格
在DATAGRID中使用分类标题
                    e.Item.Cells.RemoveAt(3);
在DATAGRID中使用分类标题                    e.Item.Cells.RemoveAt(
2);
在DATAGRID中使用分类标题                    e.Item.Cells.RemoveAt(
1);
在DATAGRID中使用分类标题                    e.Item.Cells[
0].Attributes.Add("align","left");
在DATAGRID中使用分类标题                    e.Item.Cells[
0].Font.Bold = true;
在DATAGRID中使用分类标题                    e.Item.BackColor 
= Color.FromArgb(204,204,255);
在DATAGRID中使用分类标题                }

在DATAGRID中使用分类标题            }

在DATAGRID中使用分类标题        }

在DATAGRID中使用分类标题        
#endregion



相关文章:

  • 2021-11-04
  • 2022-12-23
  • 2022-02-21
  • 2022-12-23
  • 2022-01-27
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-23
  • 2021-09-28
  • 2022-12-23
  • 2022-12-23
  • 2021-09-09
相关资源
相似解决方案