none
自定义控件重载OnInit后,放入带AJAX的页面时在设计页和源码页不同步 RRS feed

  • 问题

  • 在一个自定义的gridview里重载了OnInit,用于扩展功能的初始化,编译没有问题,当使用这个控件的页面不使用AJAX,用DIV或table包含这个控件时,改ID,设置各种属性和事件等一切正常,而如果放一个ScriptManager,然后再把这个控件拖进页面,在设计页出现可以看到控件的显示,但在源码页则什么都没有生成,就算在属性里改东西,在源码也没有任何东西出现。

    2009年11月13日 9:43

答案

  • js的话 重写onprerender方法

    新事件 如果是net事件 只定义委托事件和方法就行了

    • 已标记为答案 scate233 2009年11月17日 1:17
    2009年11月14日 7:12
  • webform中除了在前台有单击和双击的概念外,在后台似乎没有这样的概念。
    关于单击和双击事件你可以直接在GridView的databound事件中通过下面方式添加。
    e.Row.Attribute.Add("click","Your script")
    如果你是想要在后台改变样式,对于你要新添加的事件,检测委托是否为null,注册相应的脚本,然后重写GridView中的下面两个事件。
    protected virtual void RaisePostBackEvent(string eventArgument)在该方法中检测通过脚本传回来的argument决定响应什么事件,然后传给下面这个方法响应参数。

    private bool HandleEvent(EventArgs e, bool causesValidation, string validationGroup)调用你定义的handler进行处理。

    Microsoft Online Community Support
    • 已标记为答案 scate233 2009年11月17日 1:15
    2009年11月16日 3:55

全部回复

  • 扩展什么功能??如果js或者html的话 那就不合适了
    2009年11月13日 13:23
  • 一些js和新的事件
    2009年11月14日 1:56
  • js的话 重写onprerender方法

    新事件 如果是net事件 只定义委托事件和方法就行了

    • 已标记为答案 scate233 2009年11月17日 1:17
    2009年11月14日 7:12
  • 我把一个gridview新加了一个单击样式,扩展单击和双击的后台事件,就是说单击更改行样式要写在onprerender,后台事件只定义委托和方法该怎么弄?

    2009年11月16日 1:30
  • webform中除了在前台有单击和双击的概念外,在后台似乎没有这样的概念。
    关于单击和双击事件你可以直接在GridView的databound事件中通过下面方式添加。
    e.Row.Attribute.Add("click","Your script")
    如果你是想要在后台改变样式,对于你要新添加的事件,检测委托是否为null,注册相应的脚本,然后重写GridView中的下面两个事件。
    protected virtual void RaisePostBackEvent(string eventArgument)在该方法中检测通过脚本传回来的argument决定响应什么事件,然后传给下面这个方法响应参数。

    private bool HandleEvent(EventArgs e, bool causesValidation, string validationGroup)调用你定义的handler进行处理。

    Microsoft Online Community Support
    • 已标记为答案 scate233 2009年11月17日 1:15
    2009年11月16日 3:55
  • 我现在在扩展的事件是要在双击一行后,既在前台调用样式,又要调用写在CS文件里的函数,就像editchange那样的事件函数,现在单击双击的样式已经成功,但怎么调用用户在后台写的函数不知道怎么反射,比如我在扩展空间的属性里增加一条
    [DefaultValue(“”)]
    [Description("双击后执行的后台函数")]
            public string SelectOneRow
            {
                get
                {
                    object obj = ViewState["DBClickRow"];
                    if (obj != null)
                    {
                        return (string)obj;
                    }
                    return "";
                }
                set
                {
                    ViewState["SelectOneRow"] = value;
                }
            }

    现在的问题是要在什么函数的重载里来实现,以及用这个后台函数的方法
    2009年11月16日 6:50
  • 你这个属性指定在什么阶段使用 如果在客户端  需要回调方法
    另外你提供代码太少 只能猜测
    2009年11月16日 8:59
  • 在网页的设计阶段使用,就是把控件拖到网页后,在属性框填入双击一行要调用的后台函数,就像拖一个button进页面,然后在“属性”--“事件”的Click里面写上事件函数名那样的,然后在生成页面后,双击行就可以触发这个函数。

    上面那段东西就等于是给gridview的属性页增多了一条用于填写服务器端事件的空格。

    2009年11月16日 9:27
  • 自定义继承委托类 不就行了
    一条用于填写服务器端事件的空格? 我不理解这个意思
    2009年11月16日 13:41