当前位置:编程学习 > C#/ASP.NET >>

ASPxGridView 嵌套级联菜单

在DevExpress里面的ASPxGridView里面怎么实现级联下拉菜单效果呀,怎么实现拉,望哪位高手指点一下呀,感激不尽。
--------------------编程问答-------------------- 这几天我也在做这东西:嘻嘻

前台代码:
 <dx:ASPxGridView ID="dDgvMenuList" runat="server" SkinID="agview" KeyFieldName="Id"
            AutoGenerateColumns="False" Width="100%" 
            onbeforecolumnsortinggrouping="dDgvMenuList_BeforeColumnSortingGrouping" 
            onrowupdating="dDgvMenuList_RowUpdating">
               <SettingsPager SEOFriendly="Enabled" PageSize="5">
                            <FirstPageButton Visible="True" Text="首页">
                            </FirstPageButton>
                            <LastPageButton Visible="True" Text="尾页">
                            </LastPageButton>
                            <NextPageButton Text="下一页">
                            </NextPageButton>
                            <PrevPageButton Text="前一页">
                            </PrevPageButton>
                    <Summary AllPagesText="页: {0} / {1} ({2}行)" />
                </SettingsPager>
                <SettingsBehavior AllowSelectByRowClick="true" />
            <Templates>
                <DetailRow>
                    <dx:ASPxGridView ID="dDgvMenuChildList" runat="server" KeyFieldName="Id"
                        ondatabinding="dDgvMenuChildList_DataBinding"> 
                        <SettingsDetail IsDetailGrid="True" />
                          <Columns>

                            <dx:GridViewCommandColumn VisibleIndex="1">
                                <EditButton Text="编 辑" Visible ="true" />
                            </dx:GridViewCommandColumn>
                            <dx:GridViewDataTextColumn Caption="菜单名称" VisibleIndex="2" FieldName="Name">
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn Caption="菜单类别" FieldName="Type" VisibleIndex="2">
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn Caption="排序" FieldName="OrderID" VisibleIndex="3">
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn Caption="地址" FieldName="PathURL" VisibleIndex="4">
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn Caption="图片路径" FieldName="Img" VisibleIndex="6">
                            </dx:GridViewDataTextColumn>
                            <dx:GridViewDataTextColumn Caption="是否显示" FieldName="IsView" VisibleIndex="5">
                            </dx:GridViewDataTextColumn >
                        </Columns>
                    </dx:ASPxGridView>
                </DetailRow>
            </Templates>
            <Columns>
                    <dx:GridViewCommandColumn ShowSelectCheckbox="true" VisibleIndex="0">
                        <HeaderTemplate>
                           <input id="chkChoose" type="checkbox" onclick="dDgvMenuList.SelectAllRowsOnPage(this.checked);"  title="全选/全不选"/>全选/全不选
                        </HeaderTemplate>                       
                    </dx:GridViewCommandColumn>
                        <dx:GridViewCommandColumn VisibleIndex="1">
                            <EditButton Text="编 辑" Visible ="true" />
                        </dx:GridViewCommandColumn>
                        <dx:GridViewDataTextColumn Caption="菜单名称" VisibleIndex="2" FieldName="Name">
                        </dx:GridViewDataTextColumn>
                        <dx:GridViewDataTextColumn Caption="菜单类别" FieldName="Type" VisibleIndex="2">
                        </dx:GridViewDataTextColumn>
                        <dx:GridViewDataTextColumn Caption="排序" FieldName="OrderID" VisibleIndex="3">
                        </dx:GridViewDataTextColumn>
                        <dx:GridViewDataTextColumn Caption="地址" FieldName="PathURL" VisibleIndex="4">
                        </dx:GridViewDataTextColumn>
                        <dx:GridViewDataTextColumn Caption="图片路径" FieldName="Img" VisibleIndex="6">
                        </dx:GridViewDataTextColumn>
                        <dx:GridViewDataTextColumn Caption="是否显示" FieldName="IsView" VisibleIndex="5">
                        </dx:GridViewDataTextColumn >
            </Columns>
        </dx:ASPxGridView>


后台代码:
 protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            { 
                // 允许展开主表,显示从表的详细信息,打开第二条主表信息,第一条关闭
                dDgvMenuList.SettingsDetail.AllowOnlyOneMasterRowExpanded = true;
                dDgvMenuList.SettingsDetail.ShowDetailButtons = true;
                dDgvMenuList.SettingsDetail.ShowDetailRow = true;
                BindData();
                dDgvMenuList.ExpandRow(0);
            }
        }
        
        protected void BindData() {
            _menuBLL.ClearCriteria();
            int printID = 0;
            string menuName = MenuSearchControl1.MenuName;
            string menuid = MenuSearchControl1.MenuID;
            int menutype = MenuSearchControl1.MenuType;
        //    bool isview = MenuSearchControl1.IsView;
            if (!string.IsNullOrEmpty(menuName))
            {
                _menuBLL.AddCondition(PRestrictions.Eq("Name", menuName));
            }
            if (menutype!=0)
            {
                _menuBLL.AddCondition(PRestrictions.Eq("Type", menutype));
            }
            else
            {
                _menuBLL.AddCondition(PRestrictions.Eq("Type", 1));
            }
           
            if (!string.IsNullOrEmpty(menuid))
            {
                _menuBLL.AddCondition(PRestrictions.Eq("ID", menuid));
            }
            _menuBLL.AddCondition(PRestrictions.Eq("ParentID", printID));
            dDgvMenuList.DataSource = _menuBLL.List();
            dDgvMenuList.DataBind();

        }

        protected void dDgvMenuChildList_DataBinding(object sender, EventArgs e)
        {
            DevExpress.Web.ASPxGridView.ASPxGridView grid = sender as DevExpress.Web.ASPxGridView.ASPxGridView;
            if ((grid != null) && (_menuBLL.List() != null))
            {
                //取主表记录的Key,主表必须设定KeyFieldName
                int i = (int)grid.GetMasterRowKeyValue();
                if (i >= 0)
                {
                    //通过Key定位数据,指定子表数据源 
                    _menuBLL.AddCondition(PRestrictions.Eq("ParentID", i));
                    grid.DataSource = _menuBLL.List();
                }
            }
        }

        protected void btnDelMenu_Click(object sender, EventArgs e)
        {
            List<object> values = this.dDgvMenuList.GetCurrentPageRowValues("Id");
            List<object> uvalues = dDgvMenuList.GetSelectedFieldValues(new string[] { dDgvMenuList.KeyFieldName });
            for (int i = 0; i < uvalues.Count; i++)
            { //获取主键值
                int menuid = Convert.ToInt32(uvalues[i]);
                _menuBLL.Delete(_menuBLL.Get<Point.Data.Domain.Menu>(menuid));
            }
            BindData();
        }

        protected void dDgvMenuList_BeforeColumnSortingGrouping(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewBeforeColumnGroupingSortingEventArgs e)
        {
            dDgvMenuList.KeyFieldName = "Id";
            BindData();
        }
        protected void dDgvMenuList_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
        {
            string id = dDgvMenuList.GetSelectedFieldValues(new string[] { dDgvMenuList.KeyFieldName })[0].ToString();
            int menuid = Convert.ToInt32(id);
            var menu = _menuBLL.Get<Point.Data.Domain.Menu>(menuid);

            menu.Name = e.NewValues["Name"].ToString();
            menu.PathURL = e.NewValues["PathURL"].ToString();
            menu.OrderID = Convert.ToInt32(e.NewValues["OrderID"]);
            menu.IsView = Convert.ToBoolean(e.NewValues["OrderID"]);
            menu.Img = e.NewValues["Img"].ToString();
            menu.Type =(MeunType) e.NewValues["Type"];
            _menuBLL.Update(menu);
            dDgvMenuList.CancelEdit();
            e.Cancel = true;
            BindData();
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,