C# Asp.net寻呼机单击事件未触发,其背后的逻辑是什么?
我不明白的是,我有一个寻呼机创建功能,就是这样C# Asp.net寻呼机单击事件未触发,其背后的逻辑是什么?,c#,asp.net,rendering,pager,C#,Asp.net,Rendering,Pager,我不明白的是,我有一个寻呼机创建功能,就是这样 public void createPager() { Div_Pager.Controls.Clear(); ImageButton left = new ImageButton(); left.ID = "leftButton";// +new Random().Next(); left.Click+=new ImageClickEventHandler(pager_Left_Click); left.I
public void createPager()
{
Div_Pager.Controls.Clear();
ImageButton left = new ImageButton(); left.ID = "leftButton";// +new Random().Next();
left.Click+=new ImageClickEventHandler(pager_Left_Click);
left.ImageUrl = "http://" + Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] + "/Teknik_raporlar/left.bmp";
ImageButton right = new ImageButton(); right.ID = "rightButton";// +new Random().Next();
right.Click+=new ImageClickEventHandler(pager_Right_Click);
right.ImageUrl = "http://" + Request.ServerVariables["SERVER_NAME"] + ":" + Request.ServerVariables["SERVER_PORT"] + "/Teknik_raporlar/right.bmp";
Div_Pager.Controls.Add(left);
Div_Pager.Controls.Add(right);
if (int.Parse(ViewState["NOP"].ToString()) <= 1) // Number of Pages
{
Div_Pager.Visible = false;
}
else
{
Div_Pager.Visible = true;
if (int.Parse(ViewState["CurrentPage"].ToString()) <= 1)
{
left.Visible = false;
}
if (int.Parse(ViewState["CurrentPage"].ToString()) >= int.Parse(ViewState["NOP"].ToString()))
{
right.Visible = false;
}
}
}
protected void pager_Left_Click(object sender, EventArgs e)
{
ViewState["CurrentPage"] = int.Parse(ViewState["CurrentPage"].ToString()) - 1;
}
protected void pager_Right_Click(object sender, EventArgs e)
{
ViewState["CurrentPage"] = int.Parse(ViewState["CurrentPage"].ToString()) + 1;
}
您正在创建和重新创建动态控件,用于正常控件事件绑定 如果完成,则为Page_Load(),但不适用于动态创建的控件。 您需要在PreInit中创建动态控件(或至少在OnInit()中创建动态控件)&在那里附加事件本身。每次回发都需要重新创建动态控件 而且每次u按钮ID都需要是新的, 像left.ID=
“leftButton”+random_no.ToString();
以下是动态创建控件的最佳实践
这是一篇很长的文章,但请大家通过
override Render()
{
function1()
}
Page_Load()
{
function1()
}
funtion1()
{
createpager()
}