ASP.NET TestBox技巧

本文介绍了 ASP.NET 中 TextBox 控件的各种使用技巧,包括隐藏边框、自动调整大小、保持滚动条位置、动态生成及遍历所有 TextBox 控件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP.NET中控制CSS隐藏textbox边框
1.隐藏上左右边框(填空式)

body
{
font-size:12px;
}


.myline
{
border-right: #000000 0px solid;
border-top #000000 0px solid;
border-left: #000000 0px solid;
border-bottom: #000000 1px solid
}

2.隐藏上下左右边框

.tbx_txt
{
border-width: 0px 0px 0px 0px;
overflow:hidden;
}

asp.net的多行TextBox随内容增加自动增高而不显示滚动条!

<asp:TextBox runat="server" TextMode="MultiLine" Style="overflow-x: hidden; overflow-y: auto;"
Height="303px" Width="661px"></asp:TextBox>

转载:http://wzjsblog.blogbus.com/logs/48173513.html

<!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">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="滚动条, scrollbar, 页面底部, 聊天窗口, " />
<meta name="description" content="有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最 下方,如果要看到最下方的内容,就必须保证滚动条保持在最底部。" />
<title>将滚动条(scrollbar)保持在最底部的方法 - 滚动条, scrollbar, 页面底部, 聊天窗口, </title>
</head>
<body>
<div id="example">
<h3 id="example_title">
将滚动条(scrollbar)保持在最底部的方法</h3>
<div id="example_main">
<!--************************************* 实例代码开始 *************************************-->

<script type="text/javascript">
function add()
{
var now = new Date();
var div = document.getElementById('scrolldIV');
div.innerHTML = div.innerHTML + 'time_' + now.getTime() + '<br />';
div.scrollTop = div.scrollHeight;
}
</script>

<span class="notice">请点击“插入一行”按钮,插入最新信息,当出现滚动条时,滚动条将自动保持在底部。</span><br />
<div id="scrolldIV" style="overflow: auto; height: 100px; width: 400px; border: 1px solid #999;">
</div>
<input type="button" value="插入一行" οnclick="add();">
<!--************************************* 实例代码结束 *************************************-->
</div>
</div>
</body>
</html>

<asp:TextBox ID="TextBox1" runat="server" Height="100px" TextMode="MultiLine" Width="400px"></asp:TextBox>

<script>
var div = document.getElementById("TextBox1")
div.scrollTop=div.scrollHeight+999999999
</script>

ASP.NET动态生成TextBox并获取其值

动态生成的文本框,生成的是HTML控件,所以获取文本框的值 控时,要注意获取的方法,不同时间获取的方法不同.(页面一架载完时的值 和 控件的原有值改变时 两种情况)

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建一个文本框
TextBox tbxName = new TextBox();
tbxName.ID = "tbxName";
tbxName.Text = "OK";
this.form1.Controls.Add(tbxName);

//创建一个按钮
Control c = ParseControl("<asp:Button Text = '按我' ID = 'myButton' runat = 'server' />");
this.form1.Controls.Add(c);

//创建一个按钮事件
Button myButton = (Button)Page.FindControl("myButton");
myButton.Command += new CommandEventHandler(this.myButton_Click);

}

protected void myButton_Click(Object sender, EventArgs e)
{
//获取文本框的值
由于动态生成的文本框,生成的是HTML控件,所以获取文本框的值只能用

string strTxtValue=Request.form["txtName"].toString()

来获取,而不能用

TextBox tb=(TextBox)this.page.form.FindControl("txtName")

string strTxtValue=tb.Text

来获取(亲身体验获取不到更改后的值),因为生成的是HTML控件,而不是Web控件,tb获取的值是最初的值
}
}

另:

protected void btnSave_Click(object sender, EventArgs e)

{

ArrayList al = new ArrayList();
al.Add(txtAname1);//txtAname1 为TextBox 的 id,代表 TextBox类型,不是字符串
al.Add(txtAname2);
al.Add(txtAname3);
al.Add(txtAname4);

string[] txtid = { "txtAname1", "txtAname2", "txtAname3", "txtAname4" };

#region 修改


//问题
mTQI = bTQI .GetModel(int.Parse(Request.QueryString["ID"]));
mTQI.QName = Request.Form["txtQname"].ToString().Trim();
mTQI.Qcreatetime = DateTime.Parse(Request.Form["txtQcreatetime"].Trim());
mTQI.Qa = Request.Form["txtQa"].Trim();
mTQI.Qislist = Request.Form["DropDownList1"].Trim();
//mTQI.Qcreatetime = DateTime.Parse(txtQcreatetime.Text.Trim()); //这三行获取不到改变的值
//mTQI.Qa = txtQa.Text;
//mTQI.Qislist = DropDownList1.SelectedValue;

//答案

List<JC.Model.t_Answerinfo> lTai2 = new List<JC.Model.t_Answerinfo>();
DataSet ds = bTAI.GetList("aQid="+Request.QueryString["ID"]+"");
lTai2 = bTAI.DataTableToList(ds.Tables[0]);
for (int i = 0; i < lTai2.Count;i++ )
{
//TextBox txt = (TextBox)FindControl("txtAname1");
string st = Request.Form[txtid[i].ToString()].ToString();
lTai2[i].Aname = st;
}

//修改
numTQ = bTQI.Update(mTQI);
for (int i = 0; i < lTai2.Count; i++)
{
bTAI.Update(lTai2[i]);
}
if (numTQ > 0)
{
btnSave.Enabled = false;
ClientScript.RegisterStartupScript(GetType(), "", "<script type='text/javascript'>alert('修改成功'); window.location.href='VoteList.aspx';</script>");
}
#endregion
}

}

.aspx与.aspx.cs页面的代码分别分别如下:

1、.aspx页面的代码如下:

-----------------------------------------------------------------------------------------------------------

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Textbox控件</title>
<script type="text/javascript" language="javascript">
var defaultUsername="请输入用户名...";
var defaultPassword="请输入密码...";

function clearName() /*当光标移动到用户名输入框时,如果输入框内无内容或者内容等于默认值,则将输入框的默认提醒值"请输入用户名..."清空*/
{
var username=document.forms[0]['tb_username'].value;
if(username==defaultUsername ||username=="")
document.forms[0]['tb_username'].value="";

}


function checkName()/*当光标移出用户名输入框时,如果用户没有往用户名输入框中输入任何内容,则将输入框的值置为默认值提醒值"请输入用户名..."*/
{
var username=document.forms[0]['tb_username'].value;
if(username==""||username==defaultUsername )
document.forms[0]['tb_username'].value=defaultUsername;


}


function clearPassword() /*当光标移动到密码输入框时,如果输入框内无内容或者内容等于默认值,则将输入框的默认提醒值"请输入密码..."清空*/
{
var password=document.forms[0]['tb_password'].value;/*获取用户名输入框的内容*/
if(password==defaultPassword ||password=="")
document.forms[0]['tb_password'].value="";
}


function checkPassword()/*当光标移出密码输入框时,如果用户没有往密码输入框中输入任何内容,则将输入框的值置为默认值提醒值"请输入密码..."*/
{
var password=document.forms[0]['tb_password'].value;
if(password==""||password==defaultPassword )
document.forms[0]['tb_password'].value=defaultPassword;
}


</script>
</head>

<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="用户名:"></asp:Label>
<span id="username" style="color:Maroon;"><asp:TextBox ID="tb_username" runat="server" OnFocus="clearName()" OnBlur="checkName()"></asp:TextBox></span>

<br />
<br />
<asp:Label ID="Label2" runat="server" Text="密 码:"></asp:Label>
&nbsp;
<asp:TextBox ID="tb_password" runat="server" OnFocus="clearPassword()" onBlur="checkPassword()"></asp:TextBox>
</div>
</form>
</body>
</html>

---------------------------------------------------------------------------------------------------------------------------------

2、.aspx.cs页面的关键代码如下:(注:我这个页面的命名叫:Textbox.aspx.cs)

-------------------------------------------------------------------------------------------------------------------------------


protected void Page_Load(object sender, EventArgs e)
{

string defaultUsername = "请输入用户名...";
string defaultPassword = "请输入密码...";

if (!IsPostBack)
{
tb_username.Text = defaultUsername;

tb_password.Text = defaultPassword;

}


//if (tb_username.Text == defaultUsername)


// tb_username.ForeColor = System.Drawing.Color.Blue;

//if (tb_password.Text == defaultPassword)
// tb_password.ForeColor = System.Drawing.Color.Red;
}

------------------------------------------------------------------------------------------------------------------------------

3、截图:

Asp.Net如何遍历所有TextBox控件并清空

asp.net 不能像window那样直接遍历this.Controls就可以了,因为:
  1. this.Controls只是包含了Page根一级的control,这样次级的control就都没有遍历
  2. TextBox一般会放在form里面,遍历this.Controls只会访问form control,而不会访问form的子Contorl

下面使用递归对页面control树进行完全遍历

private void ResetTextBox(ControlCollection cc)
{
foreach (Control ctr in cc)
{
if (ctr.HasControls())
{
ResetTextBox(ctr.Controls);
}
if (ctr is TextBox)
{
((TextBox)ctr).Text = string.Empty;
}
}
}

调用

ResetTextBox(this.Controls);

/// <summary>
/// 清空textBox
/// </summary>
/// <param name="ParentControl"></param>
public static void GetChildControlClear(Control ParentControl)
{
if (ParentControl.HasControls())
{
foreach (Control ctl in ParentControl.Controls)
{
if(ctl.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
((System.Web.UI.WebControls.TextBox)ctl).Text = "";
}
GetChildControlClear(ctl);
}
}
}

Code
1 FieldInfo[] infos = GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
2 for (int i = 0; i < infos.Length; i++)
3 {
4 if (infos[i].FieldType == typeof(TextBox))
5 {
6 ((TextBox)infos[i].GetValue(this)).Text = "";
7 }
8 }


Code
1<script language="javascript" type="text/javascript">
2 function ClearAllTextBox() {
3 var obj = window.document.forms[0];
4 for (i = 0; i < obj.elements.length; i++) {
5 var elem = obj.elements[i];
6 if (elem) {
7 if (elem.type == "text") {
8 elem.value = "";
9 }
10 }
11 }
12 }
13 </scrip

今天看了一老外写的通过CSS和JS给TextBox添加水印功能,觉得很不错,标记以便以后使用
<style type="text/css">
.WaterMarkedTextBox
{
height: 16px;
width: 168px;
padding: 2px 2 2 2px;
border: 1px solid #BEBEBE;
background-color: #F0F8FF;
color: gray;
font-size: 8pt;
text-align: center;
}
.WaterMarkedTextBoxPSW
{
background-position: center;
height: 16px;
width: 168px;
padding: 2px 2 2 2px;
border: 1px solid #BEBEBE;
background-color: #F0F8FF;
color: white;
vertical-align: middle;
text-align: right;
background-image: url(Images/psw_wMark.png);
background-repeat: no-repeat;
}
.NormalTextBox
{
height: 16px;
width: 168px;
}
</style>
<script language="javascript" type="text/javascript">
function Focus(objname, waterMarkText) {
obj = document.getElementById(objname);
if (obj.value == waterMarkText) {
obj.value = "";
obj.className = "NormalTextBox";
if (obj.value == "User ID" || obj.value == "" || obj.value == null) {
obj.style.color = "black";
}
}
}
function Blur(objname, waterMarkText) {
obj = document.getElementById(objname);
if (obj.value == "") {
obj.value = waterMarkText;
if (objname != "txtPwd") {
obj.className = "WaterMarkedTextBox";
}
else {
obj.className = "WaterMarkedTextBoxPSW";
}
}
else {
obj.className = "NormalTextBox";
}

if (obj.value == "User ID" || obj.value == "" || obj.value == null) {
obj.style.color = "gray";
}
}
</script>

<td>
<asp:TextBox ID="txtUserId" runat="server"
οnfοcus="Focus(this.id,'User ID')"
οnblur="Blur(this.id,'User ID')"
Width="126px" CssClass="WaterMarkedTextBox">User ID</asp:TextBox>
</td>
</tr>
<tr>
<td>
Password
</td>
<td>
<asp:TextBox ID="txtPwd" TextMode="Password"
runat="server" οnfοcus="Focus(this.id,'')"
οnblur="Blur(this.id,'')" Width="126px"
CssClass="WaterMarkedTextBoxPSW" />
</td>t;/td>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值