怎么解决这个问题,在后台代码写前台画面的html语言并且包含控件?急,在线等!~

fengleihen 2006-04-25 11:38:02
在后台代码写前台画面的html语言并且包含控件?
我想用
Response.Write("<table width='600' border='1' bordercolor='#0066FF'> <tr> <td><asp:TextBox id='TextBox1' runat='server'></asp:TextBox></td> <td> </td> <td> </td> </tr><tr> <td> </td> <td> </td> <td> </td></tr> <tr> <td> </td> <td> </td> <td> </td> </tr></table>")
这样根本不行啊,不可以生成控件!
请问各位该如何解决啊!~
...全文
216 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangyx 2006-04-26
Protected Overrides Sub CreateChildControls()

Dim scriptKey As String = "WriteComboScript" '+ Me.UniqueID
Dim scriptBlock As String

If (Not (Page.IsClientScriptBlockRegistered(scriptKey))) Then

scriptBlock = vbCrLf & "<script language=""javascript"">" & vbCrLf &
....

"// -->" & vbCrLf & _
"</script>"

Page.RegisterClientScriptBlock(scriptKey, scriptBlock)
End If
TextBox1.Width = Unit.Pixel(CInt(Me.Width.Value) - 18) '按钮宽度固定为18
ListBox1.Width = Unit.Pixel(CInt(Me.Width.Value) - 18)
ListBox1.Height = Unit.Pixel(0)
ListBox1.ID = "Listbox"
TextBox1.ID = "Textbox"
'TextBox1.AutoPostBack = True
'ListBox1.AutoPostBack = True
Controls.Add(TextBox1)
Controls.Add(New LiteralControl("<button id='Button1' style='WIDTH: 18px; HEIGHT: <%=_ButtonHeight%>; FONT-FAMILY: marlett;'onclick='ShowDetail" & Me.UniqueID & "(this)' type='button'>6</button>"))
Controls.Add(ListBox1)
TextBox1.Attributes.Add("onkeydown", "textkeydown('" & TextBox1.ClientID.ToString & "','" & ListBox1.ClientID.ToString & "')")
...
ListBox1.Attributes.Add("onkeydown", "listboxKeydown('" & ListBox1.ClientID.ToString & "')")
End Sub
  • 打赏
  • 举报
回复
fengleihen 2006-04-25
谢谢楼上的,我去找点资料看看!~回来后给分,
但是既然动态创建控件,是Html无关的,但是为什么会把控件放在html里面呢?
  • 打赏
  • 举报
回复
cat_hsfz 2006-04-25
你应该好好了解一下Page生命周期以及创建复合型WebControl这两个主题,这样就很容易知道应该怎么做了。

页面的Html是通过Render时的HtmlTextWriter输出的,不是通过Response.Write。Response.Write在ASP.NET中最好不要使用,因为它打乱了整个页面的输出。至于动态创建控件,是Html无关的,你直接创建控件的实例,然Add到一个对象的Controls集合就行。
  • 打赏
  • 举报
回复
fengleihen 2006-04-25
但是我想动态生成一个页面,控件数目不确定怎么办啊,
  • 打赏
  • 举报
回复
jxufewbt 2006-04-25
楼上正解
  • 打赏
  • 举报
回复
bingbingcha 2006-04-25
当然不能那么写了..动态添加服务器控件,需要先声名,然后Controls.Add();

例如:

前台放置一个Panel容器控件,
<asp:Panel id="Panel1" style="Z-INDEX: 104; LEFT: 144px; POSITION: absolute; TOP: 160px" runat="server">Panel</asp:Panel>

后台添加:
Button btn = new Button();
btn.ID = "DynamicBtn";
Panel1.Controls.Add( btn );
  • 打赏
  • 举报
回复
活靶子哥哥 2006-04-25
在页面上放置PlaceHolder 或者runatserver的div table td
等 使用controls.add 来添加
  • 打赏
  • 举报
回复
fengleihen 2006-04-25
问题基本解决,谢谢各位!
头疼了一天,客户太挑剔了!~
  • 打赏
  • 举报
回复
kokubo_wing 2006-04-25
  • 打赏
  • 举报
回复
fengleihen 2006-04-25
楼上的,那个代码放在后台无法确认是否在<form id="Form1" method="post" runat="server">中啊
  • 打赏
  • 举报
回复
hchxxzx 2006-04-25
示例:
Table mytable = new Table();
TableRow myrow = new TableRow();
TableCell mycell = new TableCell();

TextBox txt1 = new TextBox();
txt1.id = "t1";
txt1.Text = "test";

mycell.Controls.Add(txt1);
myrow.Controls.Add(mycell);
mytable.Controls.Add(myrow);

this.Page.Controls.Add(mytable);
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2006-04-25 11:38
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。