Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Feb 2014
    Bài viết
    0

    Tạo menu động trong asp.net

    Vừa rồi mình làm chương trình thấy làm 1 menu động khá là vất vả. (có lẽ vì khả năng tìm kiếm còn kém)
    Giờ thì mình cũng làm dc 1 men tạm ưng ý.Mình muốn hướng dẫn lại cho những ai còn chưa biết.
    OK..
    B1.Tạo db
    Mã:
    CREATE DATABASE MenuDb
    GO
    USE MenuDb
    GO
    CREATE TABLE [tblMenu] (
          [ID] [int] IDENTITY (1, 1) NOT NULL ,
          [Ten] [varchar] (50) COLLATESQL_Latin1_General_CP1_CI_AS NULL ,
          [Mota] [varchar] (255) COLLATESQL_Latin1_General_CP1_CI_AS NULL ,
          [ParentID] [int] NULL ,
          CONSTRAINT [PK_Menu] PRIMARY KEY CLUSTERED 
          (
                [MenuID]
          )  ON [PRIMARY] 
    ) ON [PRIMARY]
    GO
    INSERT INTO tblMenu
    Select 'Product','A List of Products', NULL
    UNION ALL Select 'Applications','Appliations',NULL
    UNION ALL Select 'Document','Documentation', NULL
    UNION ALL Select 'Support','Support', NULL
    UNION ALL Select 'Download','Download', NULL
    UNION ALL Select 'Background','ProductBackground', 1
    UNION ALL Select 'Details','Product Details', 1
    UNION ALL Select 'Mobile Device','Mobile DeviceApplications', 2
    UNION ALL Select 'Portal','Portal Applications',2
    UNION ALL Select 'Web Applicaitons','WebApplications', 2
    UNION ALL Select 'Demo','Demo Applicaitons', 2
    UNION ALL Select 'Performance Tests','ApplicationPerformance Tests', 2
    UNION ALL Select 'Tutorials','TutorialDocumentation', 3
    UNION ALL Select 'Programmers','ProgrammDocumentation', 3
    UNION ALL Select 'FAQ','Frequently AskedQuestions', 4
    UNION ALL Select 'Forum','Forum', 4
    UNION ALL Select 'Contact Us','Contact Us', 4
    UNION ALL Select 'InternetRestrictions','Internet Restrictions', 6
    UNION ALL Select 'Speed Solution','Speed Solutions',6
    UNION ALL Select 'Application Center Test','Application Center Test Results', 12
    UNION ALL Select 'Modem Results','Modem Results',12
    GO
    B2.Trong Default.cs
    Mã:
            protected void Page_Load(object sender, EventArgs e)
            {
                //-----------------lay du lieu dua vao dataset
                DataSet ds = new DataSet();
                string connStr = "Data Source=.\\sqlexpress;Initial Catalog=DB_Myvnexpress;Integrated Security=True";
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    string sql = "Select * from tblMenu";
                    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                    da.Fill(ds);
                    da.Dispose();
                }
    //đặt tên cho dataset
                ds.DataSetName = "Menus";
    //đặt tên cho bảng
                ds.Tables[0].TableName = "tblMenu";
    //tao datarelation 
                DataRelation relation = new DataRelation("ParentChild",
                        ds.Tables["tblMenu"].Columns["ID"],
                        ds.Tables["tblMenu"].Columns["ParentID"],
                        true);
    //
                relation.Nested = true; //Kiểm tra mối quan hệ đã được lồng vào nhau
              //đưa relation vào ds
               ds.Relations.Add(relation);
    
    //ds.GetXml() sẽ trả về 1 chuỗi 
                xmlDataSource1.Data = ds.GetXml();
    
            }
    B3.tạo file XSLT :Tên file XSLT là : TransformXSLT.xsl Vs2k8 đuôi mở rộng là .xslt
    Bạn nên tạo file có đuôi giống với bài này
    //trang hướng dẫn http://www.ibm.com/developerworks/vn...slt/index.html
    toàn bộ file:
    Mã:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" indent="yes" encoding="utf-8"/>
      <!-- Find the root node called Menus 
           and call MenuListing for its children -->
      <xsl:template match="/Menus">
        <MenuItems>
          <xsl:call-template name="MenuListing" />
        </MenuItems>
      </xsl:template>
      
      <!-- Allow for recusive child node processing -->
      <xsl:template name="MenuListing">
        <xsl:apply-templates select="tblMenu" />
      </xsl:template>
      
      <xsl:template match="tblMenu">
        <MenuItem>
          <!-- Convert Menu child elements to MenuItem attributes -->
          <xsl:attribute name="Text">
            <xsl:value-of select="Ten"/>
          </xsl:attribute>
          <xsl:attribute name="ToolTip">
            <xsl:value-of select="Mota"/>
          </xsl:attribute>
          <xsl:attribute name="NavigateUrl">
            <xsl:text>?Sel=</xsl:text>
            <xsl:value-of select="Ten"/>
          </xsl:attribute>
          
          <!-- Call MenuListing if there are child Menu nodes -->
          <xsl:if test="count(tblMenu) > 0">
            <xsl:call-template name="MenuListing" />
          </xsl:if>
        </MenuItem>
      </xsl:template>
    </xsl:stylesheet>
    B4.trong file Default.aspx
    Mã:
     <div align="center">
         <asp:Menu ID="Menu1" DataSourceID="xmlDataSource1" runat="server" 
              BackColor="#FFFBD6" DynamicHorizontalOffset="2" Font-Names="Verdana" 
              ForeColor="#990000" StaticSubMenuIndent="10px" StaticDisplayLevels="1" 
                Orientation="Horizontal" >
              <DataBindings>
                <asp:MenuItemBinding DataMember="MenuItem" 
                 NavigateUrlField="NavigateUrl" TextField="Text" ToolTipField="ToolTip"/>
              </DataBindings>
              <StaticSelectedStyle BackColor="#FFCC66" />
              <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
              <DynamicMenuStyle BackColor="#FFFBD6" />
              <DynamicSelectedStyle BackColor="#FFCC66" />
              <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
              <DynamicHoverStyle BackColor="#990000" Font-Bold="False" ForeColor="White"/>
              <StaticHoverStyle BackColor="#990000" Font-Bold="False" ForeColor="White" />
           </asp:Menu>
           <asp:XmlDataSource ID="xmlDataSource1" TransformFile="~/TransformXSLT.xsl"  
              XPath="MenuItems/MenuItem" runat="server"/> 
              
        </div>
    Ok---F5--->

  2. #2
    Ngày tham gia
    Sep 2015
    Đang ở
    Hà Nội
    Bài viết
    0
    form là winform hay webform thế!

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Từ menu con có thể click đến 1 form khác? bạn có thể chỉ cho mình có được không?

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình làm web form.Bài này mình đọc lại thấy củ chuối quá.Hic.Có nhiều cách khác gọn gàng và dễ hiểu hơn nhiều(dùng repeater chẳng hạn)

    Trích dẫn Gửi bởi muicadit
    Từ menu con có thể click đến 1 form khác? bạn có thể chỉ cho mình có được không?
    trong winform bạn tạo 1 menu.viết gì đó như 1 menu bạn vẫn thấy.Click đúp vào 1 cái nào đó.vidu abcderf
    (trước đấy bạn tạo 1 form tên là :abc.cs)
    Trong sự kiện click bạn viết
    Mã:
    abc fr=new abc();
    fr.show();
    vậy thôi

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Em có một Table PhanQuyen (Machucnang,Tenchucnang,Parentid)
    Em muốn load Tenchucnang lên từ bảng PhanQuyen này để làm menu.
    Làm trong winform với C#.
    Bố trí csdl như ( hình 1)

    Em muốn load lên theo dạng như sauHình 2)

    Mong mọi người giúp đỡ.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sao không ai trả lời em vậy nhỉ?

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •