2009-06-04 134 views
0

我有一个Web窗体在GridView的文本框,我想higlight点击一个按钮的文本。 textbox.select(start,end)不起作用。这里是代码:突出显示文本不可

Dim row As GridViewRow = TryCast(DirectCast(sender, ImageButton).Parent.Parent, GridViewRow) 
    Dim txtdays As TextBox = row.Cells(2).FindControl("txtDays") 
    Dim lbldays As Label = row.Cells(2).FindControl("lblDays") 
    Dim btndel As ImageButton = row.Cells(2).FindControl("btndel") 
    Dim imgbttnadd As ImageButton = row.Cells(2).FindControl("imgbttnadd") 

    //Show textbox and set its text. 
    txtdays.Visible = True 
    txtdays.Text = lbldays.Text 
    txtdays.Focus() 

    //Here is where I want to select the text. 
    txtdays.Select() //???????? Doesn't work. 

你是如何做到这一点的?

.Select适用于Windows窗体文本框,但不适用于Web窗体文本框。

回答

0

根据您的意见,您可能希望在您的问题中指定您正在处理ASP.NET控件。 Chris给出的答案可以用于WinForms文本框。

我不确定你在ASP.NET中如何做,但我敢打赌,你不能在服务器端代码中做到这一点。您可能必须使用JavaScript来关闭它。

3

您需要了解客户端脚本将需要执行您想要的效果。但是,需要服务器端代码才能准确识别元素。这就是为什么你需要txtDays TextBox的“渲染ID”(因为它位于一个GridView,呈现的ID会有所不同)

使用JavaScript,您可以按如下做到这一点:

下面的代码比如你的ASPX页面(你可能想把它包装在一个函数中)。我假设你对JavaScript基本熟悉。

var txtDays = document.getElementById(<%= txtDays.ClientID %>); 
if (txtDays != null) 
{ 
    txtDays.focus(); 
    txtDays.select(); 
} 

您在VB中查找的Select函数不存在。由于Focus API的实现,Focus()函数仅存在于.NET 2.0+中,该函数在客户端代码中呈现类似于上述示例的JavaScript函数。

编辑:(评论后)

在这种情况下,我想你可以使用类似下面的,而不是不工作行(你的代码示例中)。

txtDays.Attributes.Add("onfocus", "this.select();") 

这将确保当引发onfocus事件,文本框也会被选中。

+0

感谢您的额外帮助(+1)。但我已经尝试了一个很像你请求的函数,但我得到一个JavaScript错误,说txtdays没有声明。我的txtdays在模板字段中,但它应该找到它的权利?我应该发布一些标记吗? – Eric 2009-06-04 16:33:55