using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using HrBase;
using MyCompControls;
using Meta.Web.Controls;
using HrSSystem;
public partial class WebUI_Sysmg_Log : System.Web.UI.Page
{
    
    protected void Page_Load(object sender, EventArgs e)
    {      
        if (!Page.IsPostBack)
        {
          Button mybtn = (Button)Page.Master.FindControl("Button1");
         if (mybtn!=null)
            mybtn.Click += new EventHandler(test);
     }    protected void test(object sender, EventArgs e)
    {
        this.Response.Write("<script language=javascript>alert('当前用户无权操作!')</script>");
    }
}
我这样设,点击母版页上的按钮没反应.控件找到了的,在内容页中设属比如text可以发现有改变,但事件不行,请大家帮忙

解决方案 »

  1.   

    this.Response.Write(" <script language=javascript>alert('当前用户无权操作!') </script>");
    上面这行也放到Page_Load里,例如:
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += delegate { this.Response.Write(" <script language=javascript>alert('当前用户无权操作!') </script>"); };
        }
      

  2.   

    to ZengHD
    我这样打只是为了便于理解,其实那个处理方法要完成很多功能,我只是随便copy一行作测试而也,不过还是谢谢.
      

  3.   

    好像也不行,在页面Load时母版页的控件已经加载完了吧,只能在母版页处理?
      

  4.   

    to ZengHd
      按你的写法
      异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
      

  5.   

    Button mybtn = (Button)Page.Master.FindControl("Button1"); 
    你这行给的是值不是指针
      

  6.   

    母版页只是一个排版啊.为了一个统一的界面.具体的事件必须要在内容页才能确定啊.网上有这象我这么写的,也都不行,也就是说不能在内容页中给母版页的控件事件作响应么??
    若说控件是否加载,这有影响吗?事件不可以也看成一种方法属性么? if (!Page.IsPostBack) 
            { 
              Button mybtn = (Button)Page.Master.FindControl("Button1"); 
            if (mybtn!=null) 
                //mybtn.Click += new EventHandler(test); 
               mybtn.text="aa";
            }
    这样就能行.呵.
    晕死我了,难为了我两三天了
      

  7.   

        protected void Page_Load(object sender, EventArgs e)
        {
            ContentPlaceHolder cp = (ContentPlaceHolder)Page.Master.FindControl("ContentPlaceHolder1");
            if (cp != null)
            {
                Button btn = (Button)cp.FindControl("Button1");
                btn.Click += delegate { this.Response.Write(" <script language=javascript>alert('当前用户无权操作!') </script>"); };
            }
        }
      

  8.   

    先要搜索ContentPlaceHolder,再从ContentPlaceHolder里找Button
      

  9.   

    to lude8880
    那应该怎么做啊.谢谢了啊.
    把查找到的控件赋给变量不就是把指针赋于变量么?
      

  10.   

    我的button没有放在ContentPlaceHolder中,放一下试试,太感谢ZengHD了.请再继续帮我试试
      

  11.   

    to ZengHD
    不行,ContentPlaceHolder在母版页时只是一个占位符,对母版页中放入的控件根本就只放在mastpage中,若在内容页在放,我又为何还要查找呢?
    你的方法是从母版页中调内容页的控件事件.我要的是从内容页中调母版页的控件事件.
      

  12.   

    你看看我的代码,和你的页面有什么不同母版页:
    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div><asp:Button ID="Button2" runat="server" Text="Button" />
            &nbsp;<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
                <asp:Button ID="Button1" runat="server" Text="Button" /></asp:contentplaceholder>
        </div>
        </form>
    </body>
    </html>子页面:
    <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>子页面的代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
    {
        protected void test(object sender, EventArgs e)
        {
            this.Response.Write(" <script language=javascript>alert('当前用户无权操作!') </script>");
        }     protected void Page_Load(object sender, EventArgs e)
        {
            Button btn2 = (Button)Page.Master.FindControl("Button2");
            if (btn2 != null)
                btn2.Click += new EventHandler(test);        ContentPlaceHolder cp = (ContentPlaceHolder)Page.Master.FindControl("ContentPlaceHolder1");
            if (cp != null)
            {
                Button btn = (Button)cp.FindControl("Button1");
                btn.Click += delegate { this.Response.Write(" <script language=javascript>alert('当前用户无权操作!') </script>"); };
            }
        }
    }
      

  13.   

    代码好象没错。关键是母版页中Button1 这个控件,即使没有代码要执行,也有有个click事件
    母版页中:
    protected void btnSeachMain_Click(object sender, EventArgs e)
        {
    //空事件
    }内容页中:
    private void funSetMasterCallBackEvents()
        {
            //母版回调事件 不改动  必须有btnSeachChildMain按钮
            #region
            Control ctltmp = null;
            Button btnTmp = null;        ctltmp = null;
            ctltmp = Page.Master.FindControl("btnSeachMain");
            if (ctltmp != null)
            {
                btnTmp = (Button)ctltmp;
                btnTmp.Click += new EventHandler(funSeachCallBackFunction);
            }
             
            #endregion
        }
    protected void funSeachCallBackFunction(object sender, EventArgs e)
        {
            //回调后的查询         
           #region
          //其它代码
            #endregion
        }
      

  14.   

    上边注释中 btnSeachChildMain 写错了。 应是btnSeachMain
      

  15.   

    谢谢 skywolfY和ZengHD 
    后来我处理也简单.哈哈.
    把事件类托代码放在page_init中就行了.哈
      

  16.   

    init中不行。太早了。以后写代码不方便