【发布时间】:2014-08-06 19:46:45
【问题描述】:
我有一个非常简单的 devexpress aspxribbon,它带有通过数据绑定构建的按日期过滤数据的控件。我正在尝试在服务器端创建一个函数,该函数将获取我的功能区对象并遍历其子对象并找到具有给定名称的控件。我必须使用它的原因是因为您无法通过数据绑定 (here's the list of allowed properties) 为 aspxribbon 设置我通常使用的 ID 或 ClientInstanceName 属性。
我编写此函数的尝试基本上只是一厢情愿地认为从系统控件到 Devexpress RibbonEditItem 的隐式转换(因此我可以访问 Name 属性)会起作用,但显然没有。任何帮助将不胜感激!
这是我用作功能区数据源的 XML:
<?xml version="1.0" encoding="utf-8" ?>
<TestInterface>
<Panel Name="FilterTab" Text="Filter">
<Group Name="DateSelectors" Text="Date Filter">
<Item Name="DateFrom" ClientInstanceName="DateFrom" ItemType="DateEdit"></Item>
<Item Name="DateTo" ItemType="DateEdit"></Item>
<Item Name="FilterSubmit" Text="Filter"></Item>
</Group>
<Group Name="PredefinedDateFilters" Text="Pre-Defined Filters">
<Item Name="FilterYesterday" Text="Yesterday"></Item>
<Item Name="Filter7" Text="7 Days"></Item>
<Item Name="Filter30" Text="30 Days"></Item>
</Group>
</Panel>
</TestInterface>
这是我尝试构建的功能:
protected RibbonEditItemBase getbyName(string name, Control parent)
{
ControlCollection childControls = parent.Controls;
foreach(RibbonEditItemBase ctrl in childControls)
{
//found, return control
if (ctrl.Name == name)
return ctrl;
//recur for child controls
if (parent.Controls[ctrl.Index].Controls != null)
{
RibbonEditItemBase recur = getbyName(name, parent.Controls[ctrl.Index]);
//found, return control
if (recur != null)
return recur;
}
}
return null; //not found, return null
}
【问题讨论】:
标签: c# asp.net devexpress