[翻译]GridView中单击TextBox后使所在的行高亮
摘要:本文翻译自AzamSharp 的文章Highlighting Rows with TextBox OnFocus
地址是:http://gridviewguy.com/ArticleDetails.aspx?articleID=194。在保证原文意思的基础上有些地方用了自己的理解来翻译。
介绍:作者(原文中的”I”,下同)以前曾写过如何实现当鼠标经过GridView的一个行时使其变成高亮。在另外一篇文章中作者介绍了如何实现让GridView当中的行可以当其被单击的时候变成高亮。在这个文章中,作者会介绍如何实现当GridView控件当中的一个TextBox获得焦点后其所在的行变成高亮。
相关:
当鼠标移过的时候GridView的行改变:这篇文章描述怎么实现当鼠标指针指向一个行的时候让其颜色发生变化。
当鼠标单击的时候GridView的行改变:这篇文章描述当用户单击一个行的时候如何改变其颜色。
数据库:
在本文中作者用到一个名为“School”的数据库。这个数据库包含一个叫Users的表,里面记录用户的信息。此表的具体结构请参见下图:
数据填充到GridView:
第一步需要做的是填充GridView控件,下面的BindData方法是用来连接数据库并且把需要的数据装入到GridView控件当中的。此方法如下所示:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

下一步需要做的就是填加一个TextBox控件到GridView控件里,这个TextBox控件就是要实现的当其获得焦点时使其所在的行变成高亮。
填加一个有TextBox控件的模板列:
为了填加一个TextBox到GridView里我们需要建立一个模板列。大多数情况下作者(包括我在内)还是建议用模板列来代替数据绑定列的,因为摸板列里的控件你是可以通过编程的方法访问到的,比如FindControl(注:此处为根据自己的理解所译,原文为:The reason is that by using the Template Column you can refer to the column by finding the control which exists inside the column)。而数据绑定的列只能以索引的方式来访问,这样如果你以后要再插入一个列的话,那么相关的列的索引值就会发生变化。我们插入到GridView的摸板列的代码如下所示:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

现在,我们运行一下程序来看看GridView中的数据,此数据是我们虚拟出来的。
你可能留意到了作者应用了CSS,此CSS如下所示:
























最后我们需要实现的就是当GridView里的TextBox获得焦点的时候让其所在的行变成高亮的功能。
用JavaScript实现高亮:
我们需要在TextBox获得焦点的时候让其所在的行变成高亮。我们可以填加客户端”OnFoucs”事件到TextBox控件中。这个获得焦点的时间当控件获得焦点的时候被触发。让我们来看看如下的代码是如何填加这个事件到TextBox控件当中的。

方法ChangeColor()的实现如下。同样,你会注意到有一个变量oldRowColor被声明成public用来记录上一个颜色的名。属性window.event.srcElement是用来获得出发这个事件控件的名。obj.parentElement.parentElement会返回<tr>标记代表当前行已经被创建完毕。后面的"HighLightRowColor"值被赋给被高亮的那一行的obj类类型。


























到目前为止还没有完成,我们需要实现onBlur事件来实现当用户焦点离开控件时发生的动作,代码如下:

下面的代码是方法ResetColor的实现。




















ResetColor简单地把类的名通过公共变量oldRowColor赋给了类的名。这个方法把列恢复成原来的颜色。
现在运行这个程序然后把鼠标移到GridView里的文本框上,那么这一行就变成了高亮状态。这个功能当你有包含大量记录的GridView控件提供给用户更好的体验是很有用的。而当用户在输入数据时,当他们想确定正在输入的是哪行数据的时候是很管用的。
总结:
高亮状态的行可以通过很多不同的方法来实现并且也取决于程序的环境。本文作者并没有提及当GridView处于编辑状态时的情况。
I hope you liked the article, happy coding!
---------------------------------------------------------------
aspnetx的BI笔记系列索引:
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能
---------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构