页面:webform.aspx 用户控件:usercontrol用户控件里里有几个选项,一个查询按钮,webform.aspx上面放一个用户控件,下面放一个GRIDVIEW.我现在想实现的就是,用户在用户控件里选择好条件之后,然后在我的WEB页面里得到这个where条件,然后根据得到的条件去绑定GRIDVIEW.现在问题是:查询按钮在用户控件里.它只能给where 条件赋值.但是我要绑定的GV在WEB界面里.我怎么样在点用户控件里的"查询"按钮时候得到查询条件.同时在web页面里执行相应的方法.注:就是在用户控件里点查询之后,同时执行WEB页面的方法.怎么实现.?谢谢.

解决方案 »

  1.   

    http://topic.csdn.net/u/20080902/13/c7945630-93e3-4930-942a-9795240d6aa2.html
      

  2.   

        protected void Page_Load(object sender, EventArgs e)
        {
    //UcA2_1用户控件
            (UcA2_1.FindControl("Button1") as Button).Click += new EventHandler(Button1_Click);
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string keyword=(UcA2_1.FindControl("TextBox1") as TextBox).Text;
    //绑定操作
        }
      

  3.   

    jack20080808 你这种方法可以.
        protected void Page_Load(object sender, EventArgs e)
            {            (UserQuery1.FindControl("btnQuery") as Button).Click += new EventHandler(GridViewDB);
            }
            protected  void GridViewDB()
            {
                // to bind
            }
    我想实现这种操作.你那种只能加BUTTON的代理,虽然可以加一个隐藏按钮,但是反而麻烦了.能不能实现我这种?谢谢
      

  4.   

    页面前台:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default16.aspx.cs" Inherits="Default16" %>
    <%@ Register Src="MyUserControl.ascx" TagName="MyUserControl" TagPrefix="uc2" %>
    <!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>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
            <uc2:MyUserControl ID="MyUserControl1" runat="server" />
        </div>
        </form>
    </body>
    </html>页面后台
        protected void Page_Init(object sender, EventArgs e)
        {
            MyTestIn mti = (MyTestIn)this.MyUserControl1;
            mti.testHanlder += new MyTestHanlder(mti_testHanlder);
        }    void mti_testHanlder(object sender, MyEventArgs e)
        {
            this.Label1.Text = e.Sql;
        }
        protected void Page_Load(object sender, EventArgs e)
        {    }控件前台<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyUserControl.ascx.cs" Inherits="MyUserControl" %>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />控件后台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 MyUserControl : System.Web.UI.UserControl, MyTestIn
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (testHanlder != null)
            {
                MyEventArgs er = new MyEventArgs();
                er.Sql = "aaaaaaaaaaaaa";
                testHanlder(sender, er);
            }
        }    #region MyTestIn Members    public event MyTestHanlder testHanlder;    #endregion
    }public delegate void MyTestHanlder(object sender, MyEventArgs e);public interface MyTestIn
    {
        event MyTestHanlder testHanlder;
    }public class MyEventArgs
    {
        private string s_Sql;    public string Sql
        {
            get { return s_Sql; }
            set { s_Sql = value; }
        }}
      

  5.   

    我那个代码下面不是加了注释了吗?//绑定操作  可以执行GridViewDB()的操作呀.这个是典型的页面和用户控件之间的调用操作,没什么麻烦的,还有就是那个不是加隐藏按钮,而是给已有的按钮,动态添加事件,不管是页面还是用户控件里的控件,你只要找得到它,可以给它加上事件。点击时都能执行