点button1创建linkbutton的,为什么连接失效,有多个这样的linkbutton要创建,有好的办法吗

时间:2022-03-22 17:54:33
private void lb_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
Response.Write("<script>alert('"+e.CommandName+"');</script>");
}

private void Button1_Click(object sender, System.EventArgs e)
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell c = new HtmlTableCell();
c.Attributes.Add("width","40");
System.Web.UI.WebControls.LinkButton lb = new System.Web.UI.WebControls.LinkButton();
lb.ID = "lblxxx";
lb.Text = "a";
lb.CommandName =  "a";
lb.Command += new CommandEventHandler(lb_Command);
c.Controls.Add(lb);
row.Cells.Add(c);
Table1.Rows.Add(row);
}

10 个解决方案

#1


连接失效----到底是怎么个现象?

#2


我这么写怎么好使
--------------------------
//aspx页
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <table id = "Table1" runat="server">
    <tr>
    <td>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>
    </td>
    </tr>
    </table>
    </form>
</body>
</html>


//cs页
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.Table1.Rows.Count <= 1)
        {
            AddControl();
        }
    }

    private void AddControl()
    {
        HtmlTable _table = new HtmlTable();
        HtmlTableRow _row = new HtmlTableRow();
        HtmlTableCell _cell = new HtmlTableCell();
        _cell.Controls.Add(_table);
        _row.Cells.Add(_cell);

        HtmlTableRow row = new HtmlTableRow();
        HtmlTableCell cell1 = new HtmlTableCell();
        HtmlTableCell cell2 = new HtmlTableCell();

        row.Cells.Add(cell1);
        row.Cells.Add(cell2);

        Button btn1 = new Button();
        Button btn2 = new Button();

        btn1.Text = "Button1";
        btn2.Text = "Button2";
        btn1.Width = 80;
        btn2.Width = 80;

        btn1.CommandName = "a";
        btn1.Command += new CommandEventHandler(lb_Command);

        cell1.Controls.Add(btn1);
        cell2.Controls.Add(btn2);

        _table.Rows.Add(row);

        this.Table1.Rows.Insert(0, _row);    
    }

    private void lb_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
    {
        Response.Write("<script>alert('" + e.CommandName + "');</script>");
    }

    protected void Button1_Click(object sender, System.EventArgs e)
    {
        AddControl();
    }
}

#3


对照下你的代码吧,很可能是按钮引发页面刷新时没有重新添加按钮或挂接上点击链接事件

#4


TO:qltouming(缘木渔人)
因为你的添加事件是在page_load中,如果不在page_load中你试试看好使不?
我的有多极创建多个linkbutton,不能在page_load中做
看看各位有什么好的办法实现

#5


ding

#6


我有在Button1的点击中添加按钮.
但是当按钮点击触发页面刷新的时候,你新添的按钮会因为再次PageLoad而不存在的,因此有必要在Page_Load里根据条件进行判断,以重新加载按钮.

如果你这种需求在多处都有,建议你最好包装成控件
如果只是此处有这个需要,并且要添加多个,那么我的做法完全能满足,我工作中有这样的需求,我就是这么做的
如果可以,建议添加按钮的操作不要由按钮来触发,让用户在一个界面中先行配置后再予以显示,这个做法更安全可靠且可维护.
如果有必要非这么实现的话,注意在添加多个按钮时,如要保证界面整齐美观,要注意表格的嵌套,只简单的在Table中Add Row是不行的.

#7


如果我这么写,相信你会更好理解的
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
 if (this.Table1.Rows.Count <= 1)
 {
  AddControl();
 }
}
}

#8


TO:qltouming(缘木渔人) 非常感谢!
现在的问题是:所有的linkbutton都来自数据库,不能确定具体的数量。
我的界面是这样设计的:




主页是这样设计的分上中下三个部分,中间分左右两部分,全部使用table做的,
现在要求在右边的table里进行内容的动态增加和删除页面内容,

比如点主页上部分的菜单,右边的内容先全部清除,重新动态增加页面内容,内容中包括多个linkbutton,当点击其中一个linkbutton时,

再把右边的内容先全部清除,重新动态增加页面内容,内容中包括多个linkbutton,当点击其中一个linkbutton时,

再把右边的内容先全部清除,这时候生成一个文本给用户,有点像下载站点的样子,但是所有的东西
所有的都要求在一个页面操作

包装成控件不知道如何做,控件也同样要new出来,同样存在这个通过连接来加载控件的问题?

#9


ding

#10


ding

#1


连接失效----到底是怎么个现象?

#2


我这么写怎么好使
--------------------------
//aspx页
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <table id = "Table1" runat="server">
    <tr>
    <td>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>
    </td>
    </tr>
    </table>
    </form>
</body>
</html>


//cs页
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.Table1.Rows.Count <= 1)
        {
            AddControl();
        }
    }

    private void AddControl()
    {
        HtmlTable _table = new HtmlTable();
        HtmlTableRow _row = new HtmlTableRow();
        HtmlTableCell _cell = new HtmlTableCell();
        _cell.Controls.Add(_table);
        _row.Cells.Add(_cell);

        HtmlTableRow row = new HtmlTableRow();
        HtmlTableCell cell1 = new HtmlTableCell();
        HtmlTableCell cell2 = new HtmlTableCell();

        row.Cells.Add(cell1);
        row.Cells.Add(cell2);

        Button btn1 = new Button();
        Button btn2 = new Button();

        btn1.Text = "Button1";
        btn2.Text = "Button2";
        btn1.Width = 80;
        btn2.Width = 80;

        btn1.CommandName = "a";
        btn1.Command += new CommandEventHandler(lb_Command);

        cell1.Controls.Add(btn1);
        cell2.Controls.Add(btn2);

        _table.Rows.Add(row);

        this.Table1.Rows.Insert(0, _row);    
    }

    private void lb_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
    {
        Response.Write("<script>alert('" + e.CommandName + "');</script>");
    }

    protected void Button1_Click(object sender, System.EventArgs e)
    {
        AddControl();
    }
}

#3


对照下你的代码吧,很可能是按钮引发页面刷新时没有重新添加按钮或挂接上点击链接事件

#4


TO:qltouming(缘木渔人)
因为你的添加事件是在page_load中,如果不在page_load中你试试看好使不?
我的有多极创建多个linkbutton,不能在page_load中做
看看各位有什么好的办法实现

#5


ding

#6


我有在Button1的点击中添加按钮.
但是当按钮点击触发页面刷新的时候,你新添的按钮会因为再次PageLoad而不存在的,因此有必要在Page_Load里根据条件进行判断,以重新加载按钮.

如果你这种需求在多处都有,建议你最好包装成控件
如果只是此处有这个需要,并且要添加多个,那么我的做法完全能满足,我工作中有这样的需求,我就是这么做的
如果可以,建议添加按钮的操作不要由按钮来触发,让用户在一个界面中先行配置后再予以显示,这个做法更安全可靠且可维护.
如果有必要非这么实现的话,注意在添加多个按钮时,如要保证界面整齐美观,要注意表格的嵌套,只简单的在Table中Add Row是不行的.

#7


如果我这么写,相信你会更好理解的
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
 if (this.Table1.Rows.Count <= 1)
 {
  AddControl();
 }
}
}

#8


TO:qltouming(缘木渔人) 非常感谢!
现在的问题是:所有的linkbutton都来自数据库,不能确定具体的数量。
我的界面是这样设计的:




主页是这样设计的分上中下三个部分,中间分左右两部分,全部使用table做的,
现在要求在右边的table里进行内容的动态增加和删除页面内容,

比如点主页上部分的菜单,右边的内容先全部清除,重新动态增加页面内容,内容中包括多个linkbutton,当点击其中一个linkbutton时,

再把右边的内容先全部清除,重新动态增加页面内容,内容中包括多个linkbutton,当点击其中一个linkbutton时,

再把右边的内容先全部清除,这时候生成一个文本给用户,有点像下载站点的样子,但是所有的东西
所有的都要求在一个页面操作

包装成控件不知道如何做,控件也同样要new出来,同样存在这个通过连接来加载控件的问题?

#9


ding

#10


ding