|
[.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> <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> <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> <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> <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="<font color = "blue" size = 3>主栏目</font>"> <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="<font color = "blue" size = 3>子栏目</font>"> <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))
|
|
|
|

|
.: 公告
|
|
| « | November 2025 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | | |
|
.: 我的分类(专题)
|
|

.: 最新日志
.: 最新回复
|
|

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

.: 留言板
|

.: 链接
|

|