如果在后台创建gridview,至少需要在.aspx上放一个容器控件来容纳gridview.如placeholder
创建gridivew实例
GridView grid = new GridView()
添加到窗口控件中
placeholder.Add (grid)
这里的关键点在于,必须在Page_Load事件中每次都调用创建控件的代码。这与我们一般的理解是不一样的。因为这些控件是动态添加的,在页面的源文件中并没有。所以PostBack回来之后重新构建页面时,非得再次创建。这样做不会重复创建,因为每次都重新构建了,其实原先的控件都消失了。另外提醒注意:在动态创建控件的页面上,如果禁用ViewState,将使得页面失去作用。
所以对于你的代码,是没有错的。
只是在页面提交后,你必须在 Page_Load事件里面先重新创建你的 file_bt。
这样就没有问题了。
例如你做一个简单的例子,就能看到你要的效果。
在 Page_Load 事件里面写
Button file_bt = new Button()
file_bt.Width = 40
file_bt.Text = "完成"
file_bt.ID=dr["task_id"].ToString()
file_bt.Click+=new System.EventHandler(file_bt_Click)
然后这直接在方法中写
protected void file_bt_Click(object sender, EventArgs e)
{
Button b1 = (Button)sender
Label1.Text = "ok"
// showtask(int.Parse(Session["sele_wbs"].ToString()))
}
这样你就可以看到效果了。
注意,Page_Load方法中创建btn的那几个步骤,不能放到 if(!ispostback)
中哦。否则无法重新在提交的时候构建这个按钮。
第一个问题用断点调试下。是否在执行过程中 丢失或 ISpostback 机制影响了。
以下 是回答 你第二个问题 添加多个。
自定义控件 首先 需要在页面 注册
<%@ Register Src="自定义控件路径.ascx" TagName="标签名称" TagPrefix="标签 前缀
" %>
例如:<%@ Register Src="WebUserControl.ascx" TagName="Ucontrol" TagPrefix="u1" %>
在form 中 使用 :
<u1:usercontrol ID="Ucontrol" runat="server" />
多个的话就 注册 多个。 并添加到form 中去。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)