读书人

【XX】用户控件中自定义事件无法触发的

发布时间: 2012-01-02 22:40:04 作者: rapoo

【XX】用户控件中自定义事件无法触发的问题
/***************************************************
* 模块名称: 常数绑定下拉列表框

* 创建人: 叶明
* 创建日期: 2007-05-17
* 涉及数据表: SystemConst
* 最后修改人:
* 最后修改日期:
* 修改记录:
***************************************************/
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 Microsoft.Practices.EnterpriseLibrary.Data; //引用微软企业库


public partial class Dep3Sheet_CustomControls_ConstBindDropDownList : System.Web.UI.UserControl
{
Database db = DatabaseFactory.CreateDatabase( "TedaBusMIS ");

public delegate void SelectIndexChangedHandler(object sender, SelectedChangedEventArgs e);
public event SelectIndexChangedHandler SelectIndexChanged;

public class SelectedChangedEventArgs : EventArgs
{
private string _selectedText;

public string SelectedText
{
get { return _selectedText; }
}

private string _selectedValue;

public string SelectedValue
{
get { return _selectedValue; }
}

public SelectedChangedEventArgs(ListItem item)
{
_selectedText = item.Text;
_selectedValue = item.Value;
}

}

protected virtual void OnSelectIndexChange(SelectedChangedEventArgs e)
{
if (SelectIndexChanged != null)
{
SelectIndexChanged(this, e);


}
}

protected void Page_Load(object sender, EventArgs e)
{

}

/// <summary>
/// 用常数绑定下拉列表框
/// </summary>
/// <param name= "constType "> 常数类型 </param>
public void BindList(string constType)
{
if (constType == string.Empty || constType == null)
{
throw (new ArgumentException( "常数类型不能为空 "));
}
string sql = "SELECT ConstName,ConstValue FROM SystemConst WHERE Valid = 1 AND ConstType = ' " + constType + " ' ";
IDataReader dr = db.ExecuteReader(CommandType.Text, sql);
ddl.DataSource = dr;
ddl.DataTextField = "ConstName ";
ddl.DataValueField = "ConstValue ";
ddl.DataBind();
}

/// <summary>
/// 在下拉列表框中选中指定的值

/// </summary>
/// <param name= "selectValue "> 值 </param>
public void SelectByValue(string selectValue)
{
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue(selectValue));
}

/// <summary>
/// 在下拉列表框中选中指定的文本

/// </summary>
/// <param name= "text "> 文本 </param>
public void SelectByText(string text)
{
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(text));
}

/// <summary>
/// 下拉列表框中选中项的文本
/// </summary>
public string SelectText
{
get


{
return ddl.SelectedItem.Text;
}
}

/// <summary>
/// 下拉列表框中选中项的值
/// </summary>
public string SelectValue
{
get
{
return ddl.SelectedValue;
}
}

public bool AutoPostBack
{
get
{
return this.ddl.AutoPostBack;
}
set
{
this.ddl.AutoPostBack = value;
}
}

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
SelectedChangedEventArgs sica = new SelectedChangedEventArgs(ddl.SelectedItem);
OnSelectIndexChange(sica);
}
}


[解决办法]
用到这个控件的地方,没放SelectedIndexChanged事件吧,把引用这个控件的代码也贴出来。
[解决办法]
贴贴使用代码

读书人网 >asp.net

热点推荐