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#