外部控件的事件处理,急急急
我在项目中使用FineUI下面的手风琴控件(accordion),其中没有找到合适的事件来触发事件处理(ActiveIndex数据改变事件没有),手风琴下面的具体控件(Accordionpane控件)下也没有单击事件或者展开之类的事件可是我现在的需求需要在单击展开手风琴不同板块是触发刷新界面的动作,请问各位怎么处理?
重新写事件还是有别的解决办法,这种需求应该比较常见吧。。。。
--------------------编程问答-------------------- 是不是我描述的不清楚,眼看就要沉下去了
其实就是我用了外部控件,想实现单击这个控件来触发刷新界面的动作 --------------------编程问答--------------------
大神救我 --------------------编程问答--------------------
使用委托的方式吧. --------------------编程问答-------------------- 恩恩,我也企图重写这个控件来添加一个我需要的事件但是给委托弄晕了。附上我添加的代码大神们看看
public class UserAccordion : FineUI.Accordion, IPostBackEventHandler, IPostBackDataHandler--------------------编程问答-------------------- 网上有很多资料,把我搞晕了。。。 --------------------编程问答-------------------- 上面贴的代码我是想继承控件原来的类,根据原来类中的ActiveIndex这个属性的改变来生成一个事件 --------------------编程问答-------------------- <script>
{
#region
public delegate void AccordionIndexChanged(object sender, EventArgs e);
public Object object1 = new Object();
public event AccordionIndexChanged ActiveIndexChanged
{
add { Events.AddHandler(object1, value); }
remove { Events.RemoveHandler(object1, value); }
}
public void OnActiveIndexChanged(EventArgs e)
{
AccordionIndexChanged ClickNew = (AccordionIndexChanged)Events[object1];
if (ClickNew != null)
{
ClickNew(this, e);
}
}
public bool AutoPostBack
{
get
{
object obj = XState["AutoPostBack"];
return obj == null ? false : (bool)obj;
}
set
{
XState["AutoPostBack"] = value;
}
}
public void RaisePostBackEvent(string eventArgument)
{
//if (this.ActiveIndex != this.LastIndex)
//{
OnActiveIndexChanged(new EventArgs());
//}
}
#endregion
//private int LastIndex;
//private int ActiveIndex;
//属性
//public int Active_Index
//{
// get { return LastIndex; }
// set
// {
// if (LastIndex != value)
// {
// LastIndex = value;
// OnActiveIndexChanged(new EventArgs());
// }
// }
// }
#region ActiveIndex
private int _activeIndex = -1;
/// <summary>
/// 激活面板的索引
/// </summary>
//[Category(CategoryName.OPTIONS)]
[DefaultValue(0)]
[Description("激活面板的索引")]
public int ActiveIndex
{
get
{
int activeIndex = 0;
for (int i = 0, count = Panes.Count; i < count; i++)
{
if (!Panes[i].Collapsed)
{
if (activeIndex != i)
{
activeIndex = i;
OnActiveIndexChanged(new EventArgs());
break;
}
}
}
return activeIndex;
}
set
{
//if (_activeIndex != value)
//{
//_activeIndex = value;
//OnActiveIndexChanged(new EventArgs());
//}
// We cann't set children AccordionPane's Collapsed property now, because they may not been loaded yet.
_activeIndex = value;
}
}
#endregion
}
function onReady() {
var Accordion1 = '<%= Accordion1.ClientID %>';
var tb2 = X(Accordion1);
tb2.items.each(function (a, i) {
a.on("expand", function (e) {
alert(i);
});
});
}
</script>
用js控制 --------------------编程问答-------------------- 如果要回调.cs事件,可以放一个Button1,然后触发Button1的事件
function onReady() {
var Accordion1 = '<%= Accordion1.ClientID %>';
var tb2 = X(Accordion1);
tb2.items.each(function (a, i) {
a.on("expand", function (e) {
__doPostBack('Button1', '');
});
});
}
补充:.NET技术 , ASP.NET