委托添加ImageButton事件,但没触发,为什么?
这是在做电影院选座的程序,不知道为什么,给自动生成的ImageButton用委托加了imgbtn_SelectedEvent_Click事件,但点ImageButton的时候,imgbtn_SelectedEvent_Click这个事件没有被触发。。。求指点,感激万分。cs代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace CinemaWebProject_WebUI
{
public partial class BuyTickets : System.Web.UI.Page
{
string seatNCol = null;
string seatStatus = null;
string[] seatInfoByID = new string[5];
protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] == null)
{
Page.ClientScript.RegisterStartupScript(GetType(), null, "<script type='text/javascript'>alert('请先登录');window.location='/foreground/Login.aspx';</script>");
}
if (!Page.IsPostBack)
{
LoadDDLControl();
}
}
private void LoadDDLControl()
{
LoadDDLMovie();
LoadDDLHallL(this.ddl_Movie.SelectedValue);
LoadDDLDateL(this.ddl_Movie.SelectedValue,this.ddl_Hall.SelectedValue);
LoadDDLScheduleL(this.ddl_Movie.SelectedValue, this.ddl_Hall.SelectedValue,this.ddl_Date.SelectedValue);
LoadDDLTicketType();
LoadDDLActivityL(this.ddl_TicketType.SelectedValue);
ddl_Activity.Enabled = false;
LoadSeatNCol();
BeforeLoadAllSeat();
}
private void LoadDDLMovie()
{ //绑定ddl}
private void LoadDDLHallL(string selectedvalue)
{ //绑定ddl}
private void LoadDDLDateL(string selectedvalue, string selectedvalue2)
{ //绑定ddl}
private void LoadDDLScheduleL(string selectedvalue, string selectedvalue2, string selectedvalue3)
{ //绑定ddl}
private void LoadDDLTicketType()
{ //绑定ddl}
private void LoadDDLActivityL(string selectedvalue)
{ //绑定ddl}
private void LoadSeatNCol()
{
//根据所选影厅,获取座位每行数量
if (ddl_Hall.SelectedValue != "0")
{
seatNCol = Business.SeatBusiness.SearchSeatNColByHallID(Convert.ToInt32(ddl_Hall.SelectedValue));
}
}
private void GetSeatStatus()
{
Entity.MHS mhs = new Entity.MHS();
mhs.MovieID = Convert.ToInt32(ddl_Movie.SelectedValue);
mhs.HallID = Convert.ToInt32(ddl_Hall.SelectedValue);
mhs.ScheduleID = Convert.ToInt32(ddl_Time.SelectedValue);
mhs.DateID = Convert.ToInt32(ddl_Date.SelectedValue);
seatStatus = Business.SeatBusiness.SearchSeatNColFromMHS(mhs);
if (seatStatus == "-1")
{
lbl_Nothing.Visible = true;
lbl_Nothing.Text = "没有该场次";
}
else
{
lbl_Nothing.Visible = false;
}
}
protected void ddl_Movie_SelectedIndexChanged(object sender, EventArgs e)
{
this.LoadDDLHallL(this.ddl_Movie.SelectedValue);
this.LoadDDLDateL(this.ddl_Movie.SelectedValue, this.ddl_Hall.SelectedValue);
this.LoadDDLScheduleL(this.ddl_Movie.SelectedValue, this.ddl_Hall.SelectedValue, this.ddl_Date.SelectedValue);
LoadSeatNCol();
BeforeLoadAllSeat();
}
protected void ddl_Hall_SelectedIndexChanged(object sender, EventArgs e)
{
this.LoadDDLDateL(this.ddl_Movie.SelectedValue, this.ddl_Hall.SelectedValue);
this.LoadDDLScheduleL(this.ddl_Movie.SelectedValue, this.ddl_Hall.SelectedValue, this.ddl_Date.SelectedValue);
LoadSeatNCol();
BeforeLoadAllSeat();
}
protected void ddl_Date_SelectedIndexChanged(object sender, EventArgs e)
{
this.LoadDDLScheduleL(this.ddl_Movie.SelectedValue, this.ddl_Hall.SelectedValue, this.ddl_Date.SelectedValue);
LoadSeatNCol();
BeforeLoadAllSeat();
}
protected void ddl_Time_SelectedIndexChanged(object sender, EventArgs e)
{
LoadSeatNCol();
BeforeLoadAllSeat();
}
protected void ddl_TicketType_SelectedIndexChanged(object sender, EventArgs e)
{
this.LoadDDLActivityL(this.ddl_TicketType.SelectedValue);
if (ddl_TicketType.SelectedValue == "1")
{
ddl_Activity.Enabled = false;
}
else
{
ddl_Activity.Enabled = true;
}
LoadSeatNCol();
BeforeLoadAllSeat();
}
protected void BeforeLoadAllSeat()
{
if (ddl_Movie.SelectedValue == "0" || ddl_Hall.SelectedValue == "0" ||
ddl_Date.SelectedValue == "0" || ddl_Time.SelectedValue == "0" ||
ddl_TicketType.SelectedValue == "0" || ddl_Activity.SelectedValue == "0")
{
lbl_Nothing.Visible = true;
lbl_Nothing.Text = "没有该场次";
}
else
{
Entity.MHS mhs = new Entity.MHS();
mhs.MovieID = Convert.ToInt32(ddl_Movie.SelectedValue);
mhs.HallID = Convert.ToInt32(ddl_Hall.SelectedValue);
mhs.ScheduleID = Convert.ToInt32(ddl_Time.SelectedValue);
mhs.DateID = Convert.ToInt32(ddl_Date.SelectedValue);
int r = Business.SeatBusiness.IsMHSExist(mhs);
if (r > 0)
{
lbl_Nothing.Visible = false;
LoadAllSeat();
}
else
{
lbl_Nothing.Visible = true;
lbl_Nothing.Text = "没有该场次";
}
}
}
protected void LoadAllSeat()
{
GetSeatStatus();
if (seatStatus != "-1")
{
lbl_Nothing.Visible = false;
string[] temp = seatNCol.Split(',');
int[] seatCol = new int[temp.Length];
for (int i = 0; i < temp.Length; i++)
{
seatCol[i] = Convert.ToInt32(temp[i]);
}
Table table = new Table();
int rowCnt;
int rowCtr;
int cellCtr;
rowCnt = seatCol.Length;
string initSeatStatus = "-1";
//是否能被改变ID的标识——为:已售,用户无法改变座位状态 做铺垫
string enableChanged = "-1";
//能被改变为1,无法改变为0
int flag = 0;
for (rowCtr = 0; rowCtr < rowCnt; rowCtr++)
{
//创建新行并把它添加到表格中
TableRow tRow = new TableRow();
this.tbl_showSeat.Rows.Add(tRow);
for (cellCtr = 0; cellCtr < seatCol[rowCtr]; cellCtr++)
{
TableCell tCell = new TableCell();
tRow.Cells.Add(tCell);
string prodID = rowCtr + "_" + cellCtr;
tCell.Text = prodID;
ImageButton imgbtn = new ImageButton();
if (seatStatus.Substring(flag, 1) == "0")
{
initSeatStatus = "0";
enableChanged = "1";
imgbtn.ImageUrl = "~/background/seat/img/seat白.png";//Server.MapPath("~/img/") + "shafa白.png";
}
else if (seatStatus.Substring(flag, 1) == "1")
{
initSeatStatus = "1";
enableChanged = "0";
imgbtn.ImageUrl = "~/background/seat/img/seat蓝.png";
}
else if (seatStatus.Substring(flag, 1) == "2")
{
initSeatStatus = "2";
enableChanged = "0";
imgbtn.ImageUrl = "~/background/seat/img/seat黑.png";
}
imgbtn.ID = "imgbtn_" + rowCtr + "_" + cellCtr + "_" + initSeatStatus+ "_" +enableChanged;
imgbtn.Click += new ImageClickEventHandler(this.imgbtn_SelectedEvent_Click);
tCell.Controls.Add(imgbtn);
flag++;
}
}
}
else
{
lbl_Nothing.Visible = true;
lbl_Nothing.Text = "没有该场次";
}
}
protected void imgbtn_SelectedEvent_Click(object sender, ImageClickEventArgs e)//ImageClickEventArgs System.EventArgs
{
seatInfoByID = ((ImageButton)sender).ID.Split('_');
string senderName = seatInfoByID[0];
string rowCtr = seatInfoByID[1];
string cellCtr = seatInfoByID[2];
string initSeatStatus = seatInfoByID[3];
string enableChanged = seatInfoByID[4];
if (enableChanged == "1")
{
if (initSeatStatus == "0")
initSeatStatus = "1";
else if (initSeatStatus == "1")
initSeatStatus = "0";
}
((ImageButton)sender).ID = "imgbtn_" + rowCtr + "_" + cellCtr + "_" + initSeatStatus + "_" + enableChanged;
Response.Write("<script>alert('执行了!')</script>");
Response.Write("你单击了ImageButton1,坐标为:(" + e.X.ToString() + "," + e.Y.ToString() + ")");
}
protected void btn_Submit_Click(object sender, EventArgs e)
{
//省略
}
}
}
委托 ImageButton SelectedEvent ASP.NET 电影院选座 --------------------编程问答-------------------- 动态生成控件代码和绑定代码不要放在ispostback里 --------------------编程问答--------------------
那是!ispostback,不回发的时候,因为如果改变前面的选项(如电影、影厅),后面对应的时间也需要重新绑定,每个影厅的座位也不一样,需要重新获取数据的。。。o(╯□╰)o
只能不放在回发里好使么?。。。需要重新获取数据绑定怎么办?。。。
补充:.NET技术 , ASP.NET