首页 新闻 会员 周边

用户控件事件传递问题

0
悬赏园豆:5 [待解决问题]

 <uc2:Toolbar ID="toolbar" EditOnclick="OpenUpdatePage('MarketTypesEdit.aspx?state=edit&key=');" AddOnclick="OpenAddPage ('MarketTypesEdit.aspx?state=add');" SearchServerClick="btnSearchClick" runat="server" />

做一个用户控件,想在调用此控件页面的前端配置此用户控件里Button里的事件SearchServerClick="btnSearchClick"

 

用户控件里有配置一个属性 和事件初始化

        /// <summary>
        /// 查询事件
        /// </summary>
        public EventHandler SearchServerClick
        {
            get { return searchServerClick; }
            set
            {
                searchServerClick = value;
            }
        }
        private EventHandler searchServerClick;

    btnSearch.ServerClick += searchServerClick;

为什么会出错,正确的要如何写?

 

XGU_Winner的主页 XGU_Winner | 初学一级 | 园豆:72
提问于:2010-09-08 17:01
< >
分享
所有回答(5)
0

搜索关键字:C# 自定义事件

太多教程了---

若问 | 园豆:405 (菜鸟二级) | 2010-09-08 17:13
0

这样写事件,真不如在用户控件中的最外DIV里写。

是B/S吧?呵呵

Astar | 园豆:40805 (高人七级) | 2010-09-08 17:22
我现在要的是如何实现。
支持(0) 反对(0) XGU_Winner | 园豆:72 (初学一级) | 2010-09-08 17:36
0

btnSearch.ServerClick += searchServerClick;??

换一种写法

直接在用户控件的按钮事件中。添加:if(searchServerClick!=null) searchServerClick(); 回调

 

邢少 | 园豆:10926 (专家六级) | 2010-09-08 17:23
searchServerClick(); 这里需要参数。
支持(0) 反对(0) XGU_Winner | 园豆:72 (初学一级) | 2010-09-08 17:36
@XGU_Winner: if(searchServerClick!=null) searchServerClick(sender,事件对象e); 那就用声明的委托代替 事件EventHandler 定义一个带参数的委托。事件本身就是一个特殊的委托。
支持(0) 反对(0) 邢少 | 园豆:10926 (专家六级) | 2010-09-08 17:38
0

你在页面的 Page_Load 事件里面赋值。

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-09-08 17:43
我要在页面的前段设事件
支持(0) 反对(0) XGU_Winner | 园豆:72 (初学一级) | 2010-09-08 18:03
0

给你一段代码看看:前台调用用户控件的按钮事件

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace User_Control
{
public delegate void Click(object sender,EventArgs e);

public partial class Search : System.Web.UI.UserControl
{
//大类下拉框
public string Drop_Cate_Value
{
get { return Drop_Categories.SelectedValue; }
}

//小类下拉框
public string Drop_Small_Value
{
get { return Drop_Small.SelectedValue; }
}

/// <summary>
/// 为下拉提供绑定数据
/// </summary>
/// <param name="dt">table</param>
/// <param name="Key">键值</param>
/// <param name="Value">显示值</param>
/// <param name="bol">是大类还是小类</param>
public void Drop_DataBind(ListControl lsc, DataTable dt,string Key,string Value)
{
lsc.DataSource
= dt;
lsc.DataValueField
= Key;
lsc.DataTextField
= Value;
lsc.DataBind();
}


public event Click OnClick;

protected void btn_search_Click(object sender, EventArgs e)
{
if (OnClick != null)
{
OnClick(
this, e);
}
}

protected void Page_Load(object sender, EventArgs e)
{

}
}
}

前台调用:

 

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace User_Control
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt
= new DataTable();
dt.Columns.Add(
"Id", typeof(string));
dt.Columns.Add(
"Name", typeof(string));

DataRow dr
= dt.NewRow();
dr[
0] = "1";
dr[
1] = "Yes";
dt.Rows.Add(dr);

DataRow dr1
= dt.NewRow();
dr1[
0] = "2";
dr1[
1] = "No";
dt.Rows.Add(dr1);
DropDownList drop_cate
=(DropDownList) Search1.FindControl("Drop_Categories");
DropDownList drop_small
= (DropDownList)Search1.FindControl("Drop_Small");


Search1.Drop_DataBind(drop_cate, dt,
"Id", "Name");
Search1.Drop_DataBind(drop_small,dt,
"Id", "Name");

}

Search1.OnClick
+= new Click(Search1_OnClick);
}

void Search1_OnClick(object sender, EventArgs e)
{
Response.Write(
string.Format("{0}/{1}",Search1.Drop_Cate_Value,Search1.Drop_Small_Value));
}
}
}
like%'远远'% | 园豆:635 (小虾三级) | 2010-09-09 12:35
你没有明白我的意思,我希望的是当前的这句Search1.OnClick += new Click(Search1_OnClick);是不用写的,在前台设置就行了
支持(0) 反对(0) XGU_Winner | 园豆:72 (初学一级) | 2010-09-09 15:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册