[转载]存储过程实现无限级分类(3)

最后一步显示分类(只是一条select语句)
CREATE PROCEDURE sp_Column_List 
 
AS
SELECT Column_ID, Column_Name, Parent_ID, Column_Path, Column_Depth, 
      Column_Order, Column_Intro
FROM Tb_Column
ORDER BY Column_Order
GO

接下来就是在界面呈现了 ,    显示的时候用的是GridView

Html代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="520px"
                DataKeyField
="Column_Id" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound">
                
<Columns>
                    
<asp:TemplateField HeaderText="分类信息">
                        
<ItemTemplate>
                            
<asp:Label ID="lbname" runat="server"></asp:Label>
                        
</ItemTemplate>
                        
<EditItemTemplate>
                            
<asp:TextBox ID="tbdgname" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Column_Name")%>'>
                            
</asp:TextBox>
                        
</EditItemTemplate>
                    
</asp:TemplateField>
                    
<asp:TemplateField HeaderText="添加子节点">
                        
<ItemTemplate>
                            
<href="#" onclick="Open('AddSonCate.aspx?fid=<%#DataBinder.Eval(Container.DataItem,"Column_Id")%>','son',280,80)">
                                添加子分类
</a>
                        
</ItemTemplate>
                    
</asp:TemplateField>
                    
<asp:TemplateField HeaderText="编辑">
                        
<ItemTemplate>
                            
<asp:LinkButton ID="LinkButton1" runat="server" Text="编辑" CommandName="Edit" CausesValidation="false"></asp:LinkButton>
                        
</ItemTemplate>
                        
<EditItemTemplate>
                            
<asp:LinkButton ID="LinkButton2" runat="server" Text="更新" CommandName="Update" CausesValidation="False"></asp:LinkButton>&nbsp;
                            
<asp:LinkButton ID="LinkButton3" runat="server" Text="取消" CommandName="Cancel" CausesValidation="false"></asp:LinkButton>
                        
</EditItemTemplate>
                    
</asp:TemplateField>
                    
<asp:TemplateField HeaderText="删除">
                        
<ItemTemplate>
                            
<asp:LinkButton runat="server" ID="lbdelete" Text="删除" CommandName="Delete" CausesValidation="false"
                                CommandArgument
='<%#DataBinder.Eval(Container.DataItem,"Column_Id")%>'>
                            
</asp:LinkButton>
                        
</ItemTemplate>
                    
</asp:TemplateField>
                
</Columns>
            
</asp:GridView>
            
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:WorldConnectionString %>"
                SelectCommand
="sp_Column_List" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
        
</div>
    
</form>
</body>
</html>
C#.cs代码如下: 
  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    
{
        
if (e.Row.RowType == DataControlRowType.DataRow)
        
{
            
//得到Column_Name字段的值
            string columnName = (string)DataBinder.Eval(e.Row.DataItem, "Column_Name");
            
string columnTemp = "";
            
//得到深度值Column_Depth
            int columnDepth = Int32.Parse(DataBinder.Eval(e.Row.DataItem, "Column_Depth").ToString());
            
if (columnDepth > 1)
            
{
                
for (int i = 1; i < columnDepth; i++)
                
{
                    columnTemp 
+= "&nbsp;&nbsp;&nbsp;&nbsp;";
                }

                columnTemp 
+= "";
            }

            Label lbname 
= (Label)e.Row.FindControl("lbname");
            lbname.Text 
= columnTemp + columnName;
            LinkButton lbdelete 
= (LinkButton)e.Row.FindControl("lbdelete");
            lbdelete.Attributes.Add(
"OnClick""JavaScript:return confirm('确实要删掉此分类吗?');");

        }

    }
OK....转载自
兴百放的博客
posted @   水静痕迹  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示