新动态控件,但直到现在我已经在我的GridView中的 模板字段中成功创建它们,最近从超链接切换到链接按钮 ,但不得不作出一些更改但仍然没有工作动态链接按钮没有调用命令时点击
在我的网页我有以下代码(有删节,以突出的部分)
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
...
...
TemplateField tf = new TemplateField();
tf.HeaderText = "Action";
tf.ItemTemplate = new AssignPage.MyTemplate(..., mylb);
GridView1.Columns.Add(tf);
protected void Page_PreInit(object sender, EventArgs e)
{
LinkButton lb = new LinkButton();
lb.Text = "AssignAll";
lb.Command += new CommandEventHandler(AssignAll_Click);
lb.CommandName = "XXX";
this.mylb = lb;
protected void AssignAll_Click(object sender, CommandEventArgs e)
{
string[] arg = new string[2]; // BREAK POINT HERE
arg = e.CommandArgument.ToString().Split(';');
...
...
Response.Redirect("BaseAndRepeats.aspx?id=" + r.Event.ID);
在模板类我有我有
LinkButton lb;
public MyTemplate(..., LinkButton _lb)
{
...
lb = _lb;
...
public void InstantiateIn(System.Web.UI.Control container)
{
...
...
// various conditional statements
lb.CommandArgument = mylist[rowCount].ReqtID.ToString() + ";" + mylist[rowCount].RotaUser;
container.Controls.Add(lb);
...
在处理程序中的断点从未达到
我想我是创造在正确的地方,当我在LinkButton的点击有一个叫 到Page_PreInit LinkButton的网格中显示的相当愉快 LinkButton的和Page_Load,正如我期望的 这是一个回传。 但AssignAll_Click永远不会被调用。
在浏览器页脚显示 “的javascript:__dooPsotabck(...” 当你将鼠标悬停 在buttonlink
似乎没有工作。我还读了控件应该添加到页面,但我不知道如何做到这一点,我从来没有与我的其他控件。 – hardya 2015-02-05 16:13:20
所以,我还没有最终确定这是一个答案,但我已经做了'创建templatefield将链接按钮传递给它的模板,并将templatefield添加到网格'以在回发中发生。 这对我来说并没有发生,因为我立即重定向,并且我不认为控件需要实际返回到要调用的事件的模板域和网格中,我认为这只是渲染所必需的。 – hardya 2015-02-05 16:41:26
编辑我的回复。是的,控件需要在PostBack上创建,或者他们只是停止存在,并且他们的事件不会被触发。 – 2015-02-05 16:45:52