动态控件新手,但直到现在我一直在创建它们 我的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);
...
永远不会达到处理程序中的断点
我以为我是在正确的位置创建链接按钮 链接按钮非常愉快地出现在网格中 当我点击链接按钮时有一个电话 到Page_PreInit和Page_Load,正如我所料 这是一个回发。 但是从不调用AssignAll_Click。
在浏览器页脚中显示" javascript:__ dooPsotabck(..."当你悬停时 通过buttonlink
答案 0 :(得分:1)
我认为问题在于这一行:
lb.Command += new CommandEventHandler(AssignAll_Click);
将其更改为:
lb.Command += AssignAll_Click;
编辑:
您也希望将其从Page_PreInit
移至Page_Init
,但您可能会在Page_Load
(IsPostBack
之外)找到更多成功。这是一个适合我的例子:
在ASPX页面上:
<asp:Panel ID="TestPanel" runat="server" />
代码隐藏:
protected void Page_Init(object sender, EventArgs e)
{
//Init used because TestPanel doesn't exist yet
CreateTestButton();
}
private void CreateTestButton()
{
var lb = new LinkButton();
lb.Text = "hello";
lb.Command += lb_Command;
TestPanel.Controls.Add(lb);
}
void lb_Command(object sender, CommandEventArgs e)
{
throw new NotImplementedException();
}
查看代码,看起来您在GridView中添加了另一列,并在每列中为该行创建了一个按钮 - 但您已在Page_Load
上添加了该列,并且正在创建该按钮并在Page_PreInit