ASPxGridView 嵌套级联菜单 在DevExpress里面的ASPxGridView里面怎么实现级联下拉菜单效果呀,怎么实现拉,望哪位高手指点一下呀,感激不尽。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这几天我也在做这东西:嘻嘻前台代码: <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(); } 请推荐一下学习ADO.NET的资料 TEXTBOX如何判断是否输入的是有效float数字 非接触式IC卡 读写 问题 c# 怎么判断word文档中那个文本被加粗了!! 插入数据问题~~~奇怪...高手帮帮啊~~~ 关于字符串转换为货币类型 提取dwg文件的内部信息 一个简单出库单报表打印问题,急! Visual C# 2003 Bug? 帮我 ping 一下这个地址 C#中怎样访问private? c#调用delphi编写的DLL文件报错,尝试读取或写入受保护的内存.
<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();
}