本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[.NET-Winform]二级分类的管理
麦林 发表于 2007/6/21 17:37:57

源代码:<body  class="bgcolor">    <form id="form1" runat="server">    <div>       <br/>       <table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#FFFFFF" class="border">         <tr valign="middle" >             <td colspan="3" class="topbg" style="width: 64px; height: 22px;">                  <strong>专题栏目</strong>            </td>                                   </tr>         <tr class="tdbg">             <td style="width: 15%; height: 32px;">主栏目:</td>             <td style="width: 50%; height: 32px;" valign="middle"><asp:TextBox ID="tbMasterName" runat="server" Width="200px"></asp:TextBox>&nbsp;                 <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" Text="显示在顶部导航栏" Font-Bold="False" Font-Size="Small" ForeColor="Red" /></td>             <td style="width: 35%; height: 32px;">              <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" CausesValidation="False" EnableViewState="False"> [添加] </asp:LinkButton>                 &nbsp; &nbsp; &nbsp; &nbsp;                 <asp:LinkButton ID="LinkButton6" runat="server" OnClick="LinkButton6_Click">[添加子栏目]</asp:LinkButton></td>         </tr>        </table>  <br/>        <asp:Panel ID="Panel1" runat="server" Height="37px" Width="100%" Visible="False">            <table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#ffffff" class="border">              <tr class="tdbg">                 <td style="width: 15%; height: 32px;">  子栏目:</td>                 <td style="width: 50%; height: 32px;"><asp:DropDownList ID="ddlMasterName" runat ="server" Width="200px"></asp:DropDownList>&nbsp;                     <asp:TextBox ID="tbChildName" runat ="server" Width ="200px"></asp:TextBox></td>                 <td style="height: 32px; width: 35%;"> <asp:LinkButton ID="LinkButton3" runat ="server" OnClick="LinkButton3_Click">[添加]</asp:LinkButton>                     &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;                      <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">[取消]</asp:LinkButton>                 </td>              </tr>            </table>        </asp:Panel>        <br/>       <table border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#FFFFFF" class="border" style="height: 274px; width: 100%;">                       <tr class="topbg">                          <td style="height: 379px" valign="top">                              <asp:DataGrid ID="datagrid1" runat="server" AutoGenerateColumns="False" Width="100%" AllowPaging="True" AllowSorting="True" DataKeyField="SortID" OnEditCommand="datagrid1_EditCommand" OnCancelCommand="datagrid1_CancelCommand" OnPageIndexChanged="datagrid1_PageIndexChanged" PageSize="8" OnDeleteCommand="datagrid1_DeleteCommand" OnUpdateCommand="datagrid1_UpdateCommand" HorizontalAlign="Center">                                  <Columns>                                      <asp:BoundColumn DataField="sortid" HeaderText="总类ID" Visible="False"></asp:BoundColumn>                                      <asp:BoundColumn DataField="masterid" HeaderText="父类ID" Visible="False"></asp:BoundColumn>                                      <asp:BoundColumn DataField="childid" HeaderText="子类ID" Visible="False"></asp:BoundColumn>                                      <asp:TemplateColumn HeaderText="&lt;font color = &quot;blue&quot; size = 3&gt;主栏目&lt;/font&gt;">                                          <ItemTemplate>                                              <asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"mastername") %>'></asp:Label>                                          </ItemTemplate>                                          <EditItemTemplate>                                              <asp:TextBox ID="TextBox1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"mastername") %>'></asp:TextBox>                                          </EditItemTemplate>                                      </asp:TemplateColumn>                                      <asp:TemplateColumn HeaderText="&lt;font color = &quot;blue&quot; size = 3&gt;子栏目&lt;/font&gt;">                                          <ItemTemplate>                                              <asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"childname") %>'></asp:Label>                                          </ItemTemplate>                                          <EditItemTemplate>                                              <asp:TextBox ID="TextBox2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"childname") %>'></asp:TextBox>                                          </EditItemTemplate>                                      </asp:TemplateColumn>                                      <asp:EditCommandColumn ButtonType="PushButton" CancelText="取消" EditText="编辑" UpdateText="更新">                                      </asp:EditCommandColumn>                                      <asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="删除"></asp:ButtonColumn>                                  </Columns>                                  <PagerStyle VerticalAlign="Middle" PageButtonCount="8" NextPageText="上一页" PrevPageText="下一页" Mode="NumericPages" HorizontalAlign="Center" />                                  <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Font-Size="Larger" />                                  <ItemStyle Height="30px" HorizontalAlign="Center" />                                  <EditItemStyle HorizontalAlign="Center" />                              </asp:DataGrid></td>                       </tr>                  </table>    </div>  </form> </body> 代码.cs文件:public partial class Admin_YH_AddClass : System.Web.UI.Page{    DataSet A_dsDllGetMaster;    protected void Page_Load(object sender, EventArgs e)    {        if (Session["AdminID"] == null)        {            Response.Redirect("Error.aspx");        }        if (!IsPostBack)        {            dataGridBind();        }    }     protected void LinkButton6_Click(object sender, EventArgs e)    {        this.Panel1.Visible = true;        dllBind();    }     protected void LinkButton1_Click(object sender, EventArgs e)    {        string A_mastername = this.tbMasterName.Text.Trim().ToString();         if(A_mastername ==null||A_mastername =="")        {            Response.Write("<script language=javascript>alert('内容不能为空!')</script>");            return;        }        byte  IfTopBanner;        if(this.CheckBox1.Checked == true)        {            IfTopBanner = 1;        }        else        {            IfTopBanner = 0;        }        AddClass a = new AddClass();        bool abool = a.AddMaster(A_mastername,IfTopBanner);        if (abool == true)        {            Response.Write("<script language=javascript>alert('添加成功!')</script>");            dataGridBind();            dllBind();            this.tbMasterName.Text = "";        }        else        {            Response.Write("<script language=javascript>alert('添加失败!')</script>");        }    }     public void dataGridBind()    {        AddClass b = new AddClass();        DataSet A_dsGetAllSort = b.GetAllSort();        this.datagrid1.DataSource = A_dsGetAllSort.Tables[0].DefaultView;        this.datagrid1.DataBind();    }     public void dllBind()    {        AddClass c = new AddClass();        A_dsDllGetMaster = c.GetMasterName();        this.ddlMasterName.DataSource = A_dsDllGetMaster.Tables[0].DefaultView;        this.ddlMasterName.DataTextField = "mastername";        this.ddlMasterName.DataValueField = "id";        this.ddlMasterName.DataBind();    }     protected void LinkButton3_Click(object sender, EventArgs e)    {        int masterid = Convert.ToInt32(this.ddlMasterName.SelectedItem.Value.ToString());        string childname = this.tbChildName.Text.Trim().ToString();        AddClass c = new AddClass();        bool bBool = c.AddChild(childname, masterid);        if (bBool == true)        {            dataGridBind();            Response.Write("<script language=javascript>alert('添加成功!')</script>");            this.tbChildName.Text = "";        }        else        {            Response.Write("<script language=javascript>alert('添加失败!')</script>");        }    }    protected void LinkButton2_Click(object sender, EventArgs e)    {        this.Panel1.Visible = false;        this.tbChildName.Text = "";    }     //编辑    protected void datagrid1_EditCommand(object source, DataGridCommandEventArgs e)    {        this.datagrid1.EditItemIndex = e.Item.ItemIndex;        this.dataGridBind();    }     //取消    protected void datagrid1_CancelCommand(object source, DataGridCommandEventArgs e)    {        this.datagrid1.EditItemIndex = -1;        this.dataGridBind();    }     //翻页    protected void datagrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)    {        this.datagrid1.CurrentPageIndex = e.NewPageIndex;        dataGridBind();    }    //更新    protected void datagrid1_UpdateCommand(object source, DataGridCommandEventArgs e)    {        int sortid = (int)datagrid1.DataKeys[(int)e.Item.ItemIndex];         AddClass g = new AddClass();        DataSet dsMC = g.GetTwoClassID(sortid);        int masterid = Convert.ToInt32(dsMC.Tables[0].Rows[0]["masterid"].ToString());        int childid;        if (dsMC.Tables[0].Rows[0]["childid"].ToString() == DBNull.Value.ToString())        {            childid = 0;        }        else        {            childid = Convert.ToInt32(dsMC.Tables[0].Rows[0]["childid"]);        }         string A_Mname = ((TextBox)e.Item.FindControl("TextBox1")).Text;        string A_Cname = ((TextBox)e.Item.FindControl("TextBox2")).Text;        AddClass d = new AddClass();        try        {            d.UpdateDataGrid(A_Mname, masterid, A_Cname, childid, sortid);            Response.Write("<script language=javascript>alert('更新成功!')</script>");            this.datagrid1.EditItemIndex = -1;            dataGridBind();        }        catch        {            Response.Write("<script language=javascript>alert('更新失败!')</script>");        }    }           //删除    protected void datagrid1_DeleteCommand(object source, DataGridCommandEventArgs e)    {        int D_sortid = (int)datagrid1.DataKeys[(int)e.Item.ItemIndex];        AddClass h = new AddClass();        DataSet dsMC1 = h.GetTwoClassID(D_sortid);        int D_masterid = Convert.ToInt32(dsMC1.Tables[0].Rows[0]["masterid"].ToString());        int D_childid;        if (dsMC1.Tables[0].Rows[0]["childid"].ToString() == DBNull.Value.ToString())        {            D_childid = 0;         }        else        {            D_childid = Convert.ToInt32(dsMC1.Tables[0].Rows[0]["childid"]);        }        AddClass f = new AddClass();        f.DelDataGrid(D_sortid, D_masterid, D_childid);        dllBind();        dataGridBind();    }} 调用的类文件AddClass.cs:using System.Data.SqlClient; public class AddClass{    public bool AddMaster(string masterName,byte t)     {        Database data = new Database();        SqlParameter[] parms = {                                    data.MakeInParam("@masterName",SqlDbType.NVarChar,100,masterName),                                    data.MakeInParam("@t",SqlDbType.Bit,1,t)                               };        try        {            data.RunProc("YH_InsterMasterClass", parms);            return true;        }        catch         {            return false;        }    }     public DataSet GetAllSort()    {        Database data = new Database();        DataSet ds = null;        data.RunProc("YH_GetAllSort", out ds);        return ds;    }     public bool AddChild(string childName,int masterID)     {        Database data = new Database();        SqlParameter[] parms = { data.MakeInParam("@childName",SqlDbType.NVarChar,100,childName),             data.MakeInParam("@maID",SqlDbType.Int,4,masterID)        };         try        {            data.RunProc("YH_AddChiToSort", parms);            return true;        }        catch        {            return false;        }    }     public void UpdateDataGrid(string mastername, int masterid, string childname, int childid, int sortid)    {        Database data = new Database();        SqlParameter[] prams = {                                    data.MakeInParam("@A_mastername",SqlDbType.NVarChar,100,mastername),                                    data.MakeInParam("@A_masterid",SqlDbType.Int,4,masterid),                                    data.MakeInParam("@A_childname",SqlDbType.NVarChar,100,childname),                                    data.MakeInParam("@A_childid",SqlDbType.Int,4,childid),                                    data.MakeInParam("@A_sortid",SqlDbType.Int,4,sortid)                                };            data.RunProc("YH_updateDataGrid", prams);    }     public void DelDataGrid(int sortid, int masterid, int childid )    {        Database data = new Database();        SqlParameter[] prams = {                                    data.MakeInParam("@sortid",SqlDbType.Int,4,sortid),                                    data.MakeInParam("@masterid",SqlDbType.Int,4,masterid),                                    data.MakeInParam("@childid",SqlDbType.Int,4,childid)                               };        data.RunProc("YH_delSort", prams);    }     public DataSet GetMasterName()    {        Database data = new Database();        DataSet ds = null;        data.RunProc("YH_GetMasterName",out ds);        return ds;    }     public DataSet GetTwoClassID(int sortid)    {        Database data = new Database();        DataSet ds = null;        SqlParameter[] prams = {                                  data.MakeInParam("@sortid",SqlDbType.Int,4,sortid)                               };        data.RunProc("YH_GetTwoClassID",prams, out ds);        return ds;    }} 存储过程:-----当插入数据到Master 表的同时插入MasterID 到表sortCREATE PROCEDURE YH_InsterMasterClass( @mastername nvarchar (100), @t bit)asdeclare @mID intinsert into Master(mastername,ifTopBanner) values(@mastername,@t)select @@identityset @mID = @@identityinsert into sort(MasterID) values(@mID)GO -----读取sort表,通过join...on...获取mastername,childname值CREATE PROCEDURE YH_GetAllSortASselect * from sort join Masteron sort.masterID = Master.ID leftjoin Child on Child.id = sort.childid order by sort.masterid asc , sort.childid ascGO ----添加子栏目,并将生成的childid添加到master表create proc YH_AddChiToSort(   @maID int,   @childName nvarchar(100))as declare @cID intinsert into Child(ChildName,MasterID) values(@childName,@maID)  select @cID = @@identity insert into sort(ChildID,MasterID) values(@cID,@maID)GO ---更新sort表,则更新child和master名称,id不变---即需更新child, master表就可---判断若childid为空,则要添加到child表后,更新sort表CREATE proc YH_updateDataGrid( @A_mastername nvarchar(100), @A_masterid int, @A_childname nvarchar(100), @A_childid int, @A_sortid int)asdeclare @cID intif(@A_childid<>0)beginupdate Master set mastername = @A_mastername where [id]=@A_masteridupdate Child set childname = @A_childname where [id]=@A_childidendif(@A_childid =0)beginupdate Master set mastername = @A_mastername where [id]=@A_masteridInsert into Child (childname,masterid) values (@A_childname,@A_masterid)select @@identityset @cID = @@identityupdate sort set childid = @cID where sortid = @A_sortidendGO ---删除总类。若总类里不存在父类,则删除父类CREATE proc YH_delSort( @sortid int, @masterid int, @childid int)asdelete from sort where sortid = @sortid if(@childid<>0)delete from Child where [id] = @childiddelete from Master where [id] not in(select masterid from sort)GO ----读取master表create proc YH_GetMasterNameasselect [id] ,mastername from Master GO ----读取childid,masterid值CREATE PROCEDURE YH_GetTwoClassID( @sortid int)ASselect* from sort  where sortid = @sortidGO 三张表:sort表:sortID(int)<primary key> | MasterID(int)<foreign key> | ChildID(int)<foreign key>master表:ID(int) | MasterName(nvarchar(100)) | CreaterDate(datetime(8)) | IfTopBanner(int)child表:ID(int) | ChildName(nvarchar(100)) | MasterID(int) <foreign key>| AddDate(datatime(8))

阅读全文(2047) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 

The Neurotic Fishbowl

.: 公告

fighting for the work!


Bloginess

«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30

.: 我的分类(专题)

首页(449)
文字感悟(103)
学习公共库(61)
生活体会(100)
资源收集(14)
.NET-Winform(27)
音乐文字(15)
心情小记(119)
SQL问题解决(10)


In the Bowl

.: 最新日志

C#打印代码
你看到的我是蓝色的
即将逝去的3月
这个假期
两个月过去
表名存在其他表时获取数据
条码打印
Remoting的用法
INI文件用法


.: 最新回复

回复:条码打印
回复:条码打印
回复:即将逝去的3月
回复:cookie对象使用
回复:条码打印
回复:JSP学习(字符串比较)
回复:应收应付核销规则及常见问题(续)
回复:两个月过去
回复:两个月过去


The Fishkeeper
blog名称:栗色?蓝色?
日志总数:449
评论数量:201
留言数量:37
访问次数:2272056
建立时间:2006年5月16日



Text Me

.: 留言板

签写新留言

链接完成
回:loseVC
来喽~
转转......
新年啦
对自己说
祝福
回:佑手
WO


Other Fish in the Sea

.: 链接


loseVC's BLOG
Collapsar_feel
布衣加针
C#and.Net
Kinogam Web




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144803114 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号