有关WEB用户控件内子控件(文本框)的焦点及光标设置的问题,高手请进(思归,孟兄等高手们,小弟这边儿有礼啦:)),在线等待,一旦解决,立即结帐!

qq_net 2003-12-08 04:27:46
========================
第一个问题:
========================
如果在普通WEB窗体内,可以利用以下代码将焦点设置到窗体的一文本框(比如textbox1)内,并将光标放在文本框中现有内容的最后边,以便用户继续录入.
Page.RegisterStartupScript("classone", "<script language=javascript>document.all.textbox1.focus();with(document.selection.createRange()){moveStart(\"character\",document.all.textbox1.value.length+1);collapse();select();}</script>");

而现在我要写一WEB用户控件(设计页面没有<form></form>标记),此用户控件中包含一文本框(比如textbox1)子控件.
要达到以上效果,应该如何实现?

========================
第二个问题:
========================
我在以上所设计的WEB用户控件中还包含一个ListView(比如ListBox1)子控件,应该如何将焦点设置到列表中的第一条数据上,而且可以通过上下键来移动焦点.

=========================
===== 非常感谢! ======
=========================
...全文
47 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_net 2003-12-13
  • 打赏
  • 举报
回复
此问题已解决,还请各位高手们一起讨论另一个问题:
http://expert.csdn.net/Expert/topic/2543/2543412.xml?temp=.6896479
一起结帐,共计几百分的呀!
mmkk 2003-12-10
  • 打赏
  • 举报
回复
发现我笨笨的不懂得使用ClientID,楼主的问题也让我学到了一点东西。:)
yshawxp 2003-12-10
  • 打赏
  • 举报
回复
学习!谢谢
gzhubonet 2003-12-10
  • 打赏
  • 举报
回复
学习!!!!!!!!!!!!!!
祝你成功!!!!!!!!!
xinshaw 2003-12-10
  • 打赏
  • 举报
回复
哦,忘了贴jsp函数了:
<script language="javascript">
function txtfocus(txt)
{
txt.focus();
txt.select();
}
</script>
xinshaw 2003-12-10
  • 打赏
  • 举报
回复
我知道了,这样写:

//先取得控件在窗户端的ID
string me=this.ClientID;
WebControl txt1=(WebControl)Page.FindControl(me).FindControl("txtID");
txt1.Attributes.Add("onmouseover","return txtfocus(this);");
xinshaw 2003-12-10
  • 打赏
  • 举报
回复
关于这类问题我有一个:

在普通WebForm中,加入以下代码可以实现鼠标移动到文本框范围内就设置焦点:
(文本框ID为"txtID")

WebControl txt1=(WebControl)Page.FindControl("txtID");
txt1.Attributes.Add("onmouseover","return this.focus();");

但是将此文本框放在用户控件中,这种效果应该如何实现呢?
wudixiaocaoren 2003-12-09
  • 打赏
  • 举报
回复
http://forum.lostinet.com/forum.aspx?Page=-5
qq_net 2003-12-09
  • 打赏
  • 举报
回复
非常感谢大家的帮助,试试先!还希望更多的朋友参与讨论!!!
flyinglz 2003-12-09
  • 打赏
  • 举报
回复
1,使用clientid属性取得控件在客户端的ID

2,先取到selectitem再用clientid取它的值

再用RegisterStartupScript函数的方法
长江支流 2003-12-09
  • 打赏
  • 举报
回复
错了,对不起

//下拉控件.Item.Add ....
下拉控件.SelectedValue = "值";

这个值一定要在语句 下拉控件.SelectedValue = "值" 之前加载
长江支流 2003-12-09
  • 打赏
  • 举报
回复
你会发现你的用户控件拖到一个页面后原来的控件名只是一个后缀,系统解释后给它加了一个半截它的前缀
所以用ClientID,自动转换为解释后的名字
长江支流 2003-12-09
  • 打赏
  • 举报
回复
得到焦点通用
/// <summary>
/// 设置控件的焦点
/// </summary>
/// <param name="strControlName">要获取焦点的控件名称</param>
static public void SetFocus(Page webform,string strControlName)
{
if (strControlName != "")
{
if(!webform.IsStartupScriptRegistered(strControlName + "SetFocus"))
{
string strScript;
strScript="<script defer language=javascript>function window.onload() {document.all['" + strControlName + "'].focus();}</script>";
//下一句对网页可用,对模式窗口会提示出错,因为模式窗口控件还没有实例化
//strScript="<script defer language=javascript>document.all['dmc_txtDepartMentCode'].focus()</script>";
webform.RegisterStartupScript(strControlName + "SetFocus",strScript);
}
}
}


//调用设置焦点
SetFocus(this.Page,你的控件.ClientID);

选定某项
设置
下拉控件.SelectedIndex= n;

下拉控件.SelectedValue = dr["no"].ToString();
Soking 2003-12-08
  • 打赏
  • 举报
回复
web服务器控件,参考mspress Web Server Controls
shuangren 2003-12-08
  • 打赏
  • 举报
回复
1、关键是确定文本框的ID,可以在脚本里这样写
document.all.<%=TextBox1.ClientID%>
得到的是它在客户端的ID,其它的操作没有什么不同。不知我的理解对不对

2、ListBox有个属性Selected,设为True就是选上了。
键盘上下移可以先捕捉键盘事件,做个循环改变每行的Selected属性就行了。
acewang 2003-12-08
  • 打赏
  • 举报
回复
参考这个用户控件:http://www.metabuilders.com/Tools/FirstFocus.aspx
mmkk 2003-12-08
  • 打赏
  • 举报
回复
时间应该是事件,字没打好:)
mmkk 2003-12-08
  • 打赏
  • 举报
回复
类似这种由于用户控件中的子控件ID只有在使用此用户控件时才能确定,因此我想一个办法就是用户控件本身公开一个属性,就是调用叶面给此用户控件的ID,用户控件取得此ID以后就可以正确无误的生成对应的Script脚本,还有就是通过遍历查找,由于用户控件都是以[用户调用ID_控件ID]形式生成到客户端,通过遍历查找后缀是[_控件ID]这种形式的标签也有一定的可行性,但是也不好,另外一种则是依赖于UI的DOM查找,通常就是通过鼠标的时间来得到触发时间的控件编号,然后依赖于DOM来找到其他控件编号,(比如这些控件都是处在同一个表格中)这种办法就是要依赖于UI,如果UI改变,也就是说如果控件顺序改变的话都必须要重新修改Script.
瞎说了一通,不知道说明白了没有,我也同样期待更好的办法.:)

62,046

社区成员

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

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

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

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