关于页面绑定服务器控件的问题

hui717 2009-12-24 10:30:08
页面上的代码如下:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%=a%>
</div>
</form>
</body>
</html>


我想页面的内容,程序自生成,然后赋给变量a,来完成页面的显示。

后台代码如下:

public partial class Default2 : System.Web.UI.Page
{
protected string a = "";

protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
DataOperation mydo = new DataOperation("cmlConnectionString");
a = mydo.GetSqlScalarr("Select mbnote from t_datatj_mb");
Page.DataBind();
}
}
}

a的值从数据库中读出来,值为 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

但页面上什么也没有,并没有显示一个 TextBox控件呀
...全文
90 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lovely_baby 2009-12-24
  • 打赏
  • 举报
回复
你这是添加html控件吧~~
hui717 2009-12-24
  • 打赏
  • 举报
回复
谢谢,我再试试
另外,PlaceHolder里面可以添加html控件吗
silentwins 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hui717 的回复:]
我这个不仅仅是添加服务器控件,是想添加整个页面的html代码,
[/Quote]

假若是html控件,可以这样添加
假若是服务器控件,最好还是用PlaceHolder
silentwins 2009-12-24
  • 打赏
  • 举报
回复
PlaceHolder :控件容器,本身不显示,主要用来放服务器控件的,只显示其子元素(他里面的控件)

服务器控件动态添加和删除

<一>PlaceHolder 中动态添加服务器端控件

添加控件的一般方法:

声明一个新控件 如 label lb =new label()

设置控件属性 如:lb.text="text"

添加控件到 PlaceHolder 中 如: PlaceHolder1.controls.add(lb)

可以用 ViewState[AddedControl]=null 判断是不是第一次执行

动态添加控件,如果需要数据绑定,要先添加控件,然后再数据绑定,提交后(postback) 就不需要重新绑定了

new 一下就可以了,如:


        if ((ViewState[AddedControl] != null) & ((bool)ViewState[AddedControl]))//第二次就不要数据绑定了
{
ph1.Controls.Clear();//清除ph1中的控件
DropDownList dpl = new DropDownList();
dpl.ID = "controlid";
dpl.AutoPostBack = true;
ph1.Controls.Add(dpl);
}
else
{
ph1.Controls.Clear();
DropDownList dpl = new DropDownList();
dpl.ID = "controlid";
dpl.AutoPostBack = true;
ph1.Controls.Add(dpl);
//链接数据库,设置数据源等 略
dpl.DataBind();
ViewState[AddedControl] = true;
}


<二>panel中动态添加服务器端控件
在一个panel 中添加datagrid 并且绑定数据

Panel panel1 = new Panel();
panel1.Style["top"] = "200px";//设置属性
this.Controls.Add(panel1);
DataGrid dg1 = new DataGrid();//定义datagrid
BoundColumn s1 = new BoundColumn();//定义一列
s1.DataField = "first";//绑定列的数据源
s1.HeaderText = "mzi";//此列标题等属性设置
dg1.Columns.Add(s1);//加入此列

dg1.BackColor = "#00000";
dg1.CellPadding=3;
//设置 dg1的属性等
panel1.Controls.Add(dg1);
//下面数据绑定


<三> 给动态添加的控件添加事件:
如:给button 添加事件
//添加按钮1
Button bt1 = new Button();
bt1.CommandArgument = "bt1";//设置命令参数
bt1.Text = "daji";
bt1.Command += new CommandEventHandler(this.onbutton);//预定事件
ph1.Controls.Add(bt1);
//添加按钮2,又一种方法
Control cs = ParseControl("<asp:Button ID='Button2' runat='server' Text=Button' commandname='btn' CommandArgument = 'bt2'/>");//把字符串转化为控件
ph1.Controls.Add(cs);
Button bt2 = (Button)Page.FindControl("button2");
bt2.Command += new CommandEventHandler(this.onbutton);//给bt2添加事件

}
public void onbutton(object sender, CommandEventArgs e)
{
lab1.text = "label1";
}


这样二个按钮都对应一个函数,执行同一个事件

如果想让他们执行不同事件,

可以这样写:
 public void onbutton(object sender, CommandEventArgs e)
{
switch (e.CommandArgument.ToString().ToLower()) 获取命令参数,根据参数的不同,执行不同命令
{
case "bt1";
lab1.text = "label1";
break;
case "bt2";
lab1.text = "label2";
break;
}
}


<四>:在table中添加行和服务器端控件

在table中添加一行二列 table要转化服务器端控件
代码如下:

                HtmlTableRow tr1 = new HtmlTableRow();//定义行
HtmlTableCell td1 = new HtmlTableCell();//定义列
Label lb1 = new Label();// 定义 lb1 为Label控件
lb1.Text = txt[m];//lb1
td1.Controls.Add(lb1);//列中添加lbl
HtmlTableCell td2 = new HtmlTableCell();//定义列
TextBox txt1 = new TextBox();//textbox
txt1.Text = namevalue[m];//text
txt1.ID = "t" + m;//id
td2.Controls.Add(txt1);列中添加txt1
tr1.Cells.Add(td1);//行中添加列td1
tr1.Cells.Add(td2);//行中添加列td1
TABLE1.Rows.Add(tr1);//表中添加行


取得textbox中数据方法:

((TextBox)(TABLE1.Rows[m].FindControl("t" + m))).Text  第m行 id 为"t"+m的控件的值


添加html 控件,可以用 response.write("")

为服务器端控件添加客户端事件方法;
如:buttton.Attributes["onclick"] = "javascript:alert('shijain')";

hui717 2009-12-24
  • 打赏
  • 举报
回复
我这个不仅仅是添加服务器控件,是想添加整个页面的html代码,
例如这些东西
<table id="tab" style="width: 100%;" >
<tr>
<td style="width: 92px; height: 20px; text-align: right;">
报案日期从:</td>
<td style="width: 160px; height: 20px;">
<asp:TextBox ID="TextBox1" runat="server" Width="150px"></asp:TextBox><asp:RequiredFieldValidator
ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox1" Display="Dynamic"
ErrorMessage="*" ValidationGroup="aa"></asp:RequiredFieldValidator><asp:CompareValidator
ID="CompareValidator2" runat="server" ControlToValidate="TextBox1" Display="Dynamic"
ErrorMessage="日期错误" Operator="LessThan" Type="Date" ValidationGroup="aa" ValueToCompare="2100-1-1"></asp:CompareValidator></td>
<td style="width: 80px; text-align: right; height: 20px;">
至:</td>
<td style="text-align: left; height: 20px;">
<asp:TextBox ID="TextBox2" runat="server" Width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="TextBox2" Display="Dynamic" ValidationGroup="aa"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="日期错误" ControlToValidate="TextBox2" Display="Dynamic" Operator="LessThan" Type="Date" ValidationGroup="aa" ValueToCompare="2100-1-1"></asp:CompareValidator></td>
</tr>
<tr>
<td style="width: 92px; height: 20px; text-align: right">
(不)立案日期:</td>
<td style="width: 160px; height: 20px">
<asp:TextBox ID="TextBox3" runat="server" Width="150px"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator3" runat="server" ControlToValidate="TextBox3"
Display="Dynamic" ErrorMessage="日期错误" Operator="LessThan" Type="Date" ValidationGroup="aa"
ValueToCompare="2100-1-1"></asp:CompareValidator></td>
<td style="width: 80px; height: 20px; text-align: right">
至:</td>
<td style="height: 20px; text-align: left">
<asp:TextBox ID="TextBox4" runat="server" Width="150px"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator4" runat="server" ControlToValidate="TextBox4"
Display="Dynamic" ErrorMessage="日期错误" Operator="LessThan" Type="Date" ValidationGroup="aa"
ValueToCompare="2100-1-1"></asp:CompareValidator></td>
</tr>
<tr>
<td style="width: 92px; height: 20px; text-align: right">
险种类别:</td>
<td colspan="3" style="height: 20px; text-align: left">
<asp:DropDownList ID="DropDownList2" runat="server" Width="401px">
<asp:ListItem Value="%">全部险种</asp:ListItem>
<asp:ListItem Value="车险">机动车险</asp:ListItem>
<asp:ListItem Value="人身险">人身意外险</asp:ListItem>
<asp:ListItem>财产险</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td style="width: 92px; height: 20px; text-align: right;">
承保机构:</td>
<td style="height: 20px; text-align: left;" colspan="3">
<asp:DropDownList ID="DropDownList1" runat="server" Width="401px" DataTextField="branchname" DataValueField="branchno">

</asp:DropDownList>
</td>
</tr>
<tr>
<td style="width: 92px; text-align: right">
报案状态:</td>
<td colspan="3" style="text-align: left">
<asp:DropDownList ID="DropDownList3" runat="server" Width="401px" DataTextField="branchname" DataValueField="branchno">
<asp:ListItem Value=" ">全部</asp:ListItem>
<asp:ListItem Value=" and casestatus =0 ">未处理</asp:ListItem>
<asp:ListItem Value=" and casestatus =1 ">立案</asp:ListItem>
<asp:ListItem Value=" and casestatus =2 ">不立案</asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td style="width: 92px">
</td>
<td style="width: 160px">
<asp:Button ID="Button1" runat="server" Text="查询" Width="91px" ValidationGroup="aa" OnClick="Button1_Click" /></td>
<td style="width: 80px">
</td>
<td>
</td>
</tr>
</table>
silentwins 2009-12-24
  • 打赏
  • 举报
回复
不能这样生成服务器控件的,动态添加控件最好用PlaceHolder.Controls.Add(Control);
ivws_19 2009-12-24
  • 打赏
  • 举报
回复
这样添加服务器控件是不行的 - -
hui717 2009-12-24
  • 打赏
  • 举报
回复
有没有高人给个解决方案,如何实现这个功能呀
不老神仙 2009-12-24
  • 打赏
  • 举报
回复
JQuery 很是简单的
hui717 2009-12-24
  • 打赏
  • 举报
回复
如何让页面上动态生成服务器控件呀
hui717 2009-12-24
  • 打赏
  • 举报
回复
多谢,我实现了
第1章 服务器控件概述及开发环境部署 .1 1.1 自定义服务器控件 1 1.2 服务器控件在软件开发过程中的作用 1 1.3 在控件开发中提升自己 2 1.4 可继承控件基类介绍 2 1.5 运行一个简单的控件 7 1.5.1 开发一个简单控件 7 1.5.2 部署和运行 11 1.6 控件生命周期 12 1.6.1 概述 12 1.6.2 用代码跟踪控件生命周期过程 14 1.7 本章总结 17 第2章 服务器控件开发中的调试技术 18 2.1 预置代码示例 18 2.2 调试页面服务端代码 19 2.3 服务器控件的调试 20 2.3.1 运行模式下的调试方法 20 2.3.2 设计模式下的调试方法 20 2.4 javascript脚本调试方法 22 2.4.1 调试页面中的javascript脚本(方法一) 22 .2.4.2 调试页面中的javascript脚本(方法二) 23 2.4.3 调试非嵌入式javascript脚本文件 23 2.4.4 调试嵌入式javascript脚本资源文件 24 2.4.5 高效率调试的技巧 24 2.5 ajax library对javascript调试支持 26 2.6 本章总结 26 第3章 从零开始开发服务器控件 27 3.1 选择基类 27 3.2 控件呈现顺序 28 3.3 render呈现控件的几种方式 30 3.3.1 使用htmltextwriter类输出 30 3.3.2 直接输出html标签 32 3.3.3 使用服务器控件的rendercontrol方法 33 3.4 addattributestorender方法 34 3.5 createchildcontrols方法 35 3.6 inamingcontainer接口 36 3.7 实现复合控件 38 3.7.1 createchildcontrols方法 39 3.7.2 childcontrolscreated属性 39 3.7.3 ensurechildcontrols方法 39 3.7.4 recreatechildcontrols方法 39 3.7.5 controls属性 40 3.7.6 hascontrols方法 40 3.7.7 hasevents方法 40 3.7.8 findcontrol方法 41 3.7.9 实现复合控件示例 41 3.8 常用开发技巧 51 3.8.1 designmode属性 51 3.8.2 屏蔽基类控件中的属性 52 3.8.3 page.request.browser属性 53 3.8.4 设置控件id规范 53 3.8.5 增强findcontrol功能 54 3.8.6 映射服务端控件值到客户端 55 3.8.7 禁止派生自compositecontrol的控件创建子控件 56 3.8.8 使用createchildcontrols的注意事项 56 3.8.9 不要误解设计元属性defaultvalue 57 3.8.10 在render方法中利用基类资源 57 3.8.11 条件编译&条件属性 60 3.9 本章总结 61 第4章 服务器控件属性 62 4.1 控件属性的作用 62 4.1.1 系统属性 62 4.1.2 自定义属性 62 4.2 简单属性 63 4.3 属性的设计时特性 64 4.4 复杂属性 67 4.4.1 概述 67 4.4.2 复杂属性的几种标记形式 67 4.4.3 深入研究——复杂属性分析器 79 4.5 深入研究——定制自己的属性编辑器 85 4.5.1 系统属性编辑器 85 4.5.2 定制属性编辑器 91 4.6 类型转换器 126 4.6.1 系统类型转换器 126 4.6.2 定制自己的类型转换器 128 4.7 实现自定义属性 138 4.8 本章总结 145 第5章 事件和数据回发机制 146 5.1 控件事件和数据回发概述 146 5.1.1 事件及其意义 146 5.1.2 数据回发机制 147 5.2 事件和数据回发机制的实现 148 5.2.1 客户端回传事件接口ipostbackeventhandler 148 5.2.2 客户端回发/回调揭密 150 5.2.3 回传数据处理接口ipostbackdatahandler 153 5.2.4 正确处理继承基类中控件的事件 159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件) 161 5.3 复合控件的事件处理机制

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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

试试用AI创作助手写篇文章吧