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

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控件呀
...全文
91 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
多谢,我实现了

62,243

社区成员

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

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

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

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