頁面上呼叫使用者控制元件的事件
在後臺頁面,宣告一個帶一個引數的全域性委託,這個引數用來儲存下拉框選項的文字,並且在載入時候為下拉框繫結資料庫的資料來源。
SqlHelper sql = new SqlHelper();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = sql.ExecuteDataset(“select UserName,UserID from vw_Users “, “a”).Tables[0];
ddlBind.DataSource = dt;
ddlBind.DataTextField = “UserName”;
ddlBind.DataBind();
ListItem li = new ListItem("--請選擇人員--", "");
ddlBind.Items.Insert(0, li);
}
}
然後定義一個事件:
public event CalculateDelegate CalculateEvent; //定義事件
在點選按鈕事件的時候,將下拉框的選項文字給ddlSelectedText變數,
再把這個變數給新建的事件。
protected void btnQuery_Click(object sender, EventArgs e)
{
//睡眠5s,模擬資料執行操作
Thread.Sleep(5000);
string ddlSelectedText = ddlBind.SelectedItem.Text.ToString();
//如果該事件已經被訂閱,則丟擲事件,
// 這裡也預示著函式已經執行完畢,開始丟擲執行後的結果了
if (CalculateEvent != null)
CalculateEvent(ddlSelectedText);
}
父頁面:
aspx:
cs:
public partial class BasicSalary : System.Web.UI.Page { SqlHelper sql = new SqlHelper(); protected void Page_Load(object sender, EventArgs e) { WebUserControl1.CalculateEvent += (ddlSelectedText) => { //Response.Write("<script>alert('"+ddlSelectedText+"') </script>"); DataTable dt = sql.ExecuteDataset("select DeptName from vw_Users where UserName='" + ddlSelectedText + "'", "a").Tables[0]; TextBox1.Text = dt.Rows[0]["DeptName"].ToString(); };
}