Web开发中,如何在GridView每次绑定后将滚动条移动到下方?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web开发中,如何在GridView每次绑定后将滚动条移动到下方?相关的知识,希望对你有一定的参考价值。
我将GridView设置在一个div中,使Div自动显示滚动条,但是每次给GridView 重新绑定后滚动条都回到原来的地方,界面体验很不好,有没有什么解决办法?
Div+Js的方法想来应该可以的,打算再查查看
删除 - (不间断空格) - 以某种方式添加到 GridView 的绑定值中
【中文标题】删除 - (不间断空格) - 以某种方式添加到 GridView 的绑定值中【英文标题】:Remove   - (non-breaking space) - added somehow in binded value on a GridView 【发布时间】:2022-01-23 22:08:12 【问题描述】:我正在开发一个在框架 3.5 中构建的 C# Web 应用程序项目,其中 - 出于某种奇怪的原因我还没弄清楚 -  
- ( non-breaking space) 已添加。
这是场景:
我查询绑定在 GridView 中的某些数据。从数据库返回的值之一是:
04/03/2013 12:00:00 a.m.
屏幕截图显示正确返回值:
但是,当绑定这个值时——即:GvEmployee.DataBind();
——在名为“GvEmployee
”的GridView的“RowDataBound
”事件中,该值显示为: p>
4/03/2013 12:00:00 a. m.
- 注意添加的不间断空格。
然后出现System.FormatException
异常:
System.FormatException: '字符串未被识别为有效 日期时间。'
此错误是由于不间断空格和a.m.
附加字符串造成的。如果我在运行时调试时删除这些字符,则可以完成 DateTime 转换。
这是发生错误的代码:
protected void GvEmployee_RowDataBound(object sender, GridViewRowEventArgs e)
string id; // This is a reusable variable.
// Check rows only:
if (e.Row.RowIndex >= 0)
// Get the value stored in the given cell at the row:
id = e.Row.Cells[3].Text;
// Here, the value of "id" variable is: "4/03/2013 12:00:00 a. m.".
// But, the value returned by the database is: "04/03/2013 12:00:00 a.m.".
// Check if the "id" variable is not empty...
if (!id.Equals(" ") && !string.IsNullOrEmpty(id))
// Here fails, due to the value of "id" variable, that is: "4/03/2013 12:00:00 a. m."
// isn't recognized as a valid DateTime value.
e.Row.Cells[3].Text = Convert.ToDateTime(id, CultureInfo.CurrentCulture).ToShortDateString();
如你所见,字符串值上的non-breaking space:
这很奇怪,因为这个项目已经发布并且只发生在我的笔记本上 - 我相信我用于这个项目的笔记本中缺少一些配置,但是,我没有找到任何关于那可能是什么 - 我不知道不间断空格,直到这个问题发生在我身上,我在 Stack Overflow 上找到了这个 answer...
我已经搜索了这个问题的根源,并尝试通过在 Global.asax 中添加此source 中显示的配置来解决此问题,并在此处添加为清楚起见:
protected void Application_BeginRequest(Object sender, EventArgs e)
System.Globalization.CultureInfo newCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.AMDesignator = "";
newCulture.DateTimeFormat.LongDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss";
newCulture.DateTimeFormat.PMDesignator = "";
newCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
newCulture.DateTimeFormat.TimeSeparator = ":";
newCulture.DateTimeFormat.DateSeparator = "/";
System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
并搜索了如何通过更改项目的 web.config 和/或 Global.asax 中的某些配置来全局删除那些不间断的空格,但是到目前为止没有任何效果。
找到的其他替代方法是使用正则表达式来删除有问题的字符,但是,我正在寻找一个全局设置来应用 - 由于 这种情况发生在所有项目中 - 不是只有一页,不仅上面发布了给定的日期时间值,而且,我已经检查了来自数据库的响应并且它是正确的 - 问题必须在 ASP.NET C# Web 项目中,但是,我没有不知道发生这种情况的确切地点和原因。
我不知道还有什么可能,可能是操作系统的语言?还是计算机的文化设置?...
我没有想法,感谢任何帮助。
【问题讨论】:
【参考方案1】:tl;dr:我在 Visual Studio 中应用了这些更改和设置 - 不确定是哪一个应用了该问题的解决方案,但是,我会保持原样 - 因为它对我有用:
放弃我在问题中描述的 Global.asax 文件中所做的更改。 取消选中此路径中的Save documents as Unicode when data cannot be saved in codepage
选项:Tools > Options > Environment > Documents
- 归功于this answer。
从源代码管理中下载有问题的 aspx/ascx 文件的最新版本 - (此项目在 TFS 上) - 覆盖本地文件1。
在解决方案的 Site.master
上应用了这行代码:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- 归功于 this answer。
1我忘了提到这个项目在 TFS 上,当我在这个笔记本上下载项目时,我收到了这个警告:
Source of the image
我忽略了那个警告,我想我选择了OK
-> 我认为这是问题的根源。
长版:我正在做的项目是在 TFS 上;当我在笔记本中下载项目时——这是一个全新的项目——我记得我收到警告说:
此文件包含 Unicode 格式的字符,如果您将此文件保存为 ANSI 编码的文本文件,这些字符将会丢失。要保留 Unicode 信息,请单击下面的取消,然后从编码下拉列表中选择一个 Unicode 选项。继续?
我选择了 OK - 如果我没记错的话 - 项目下载继续进行,没有更多警告。
当我编译项目的所有部分并执行它时,一切都很好 - 直到我来检索一些数据 - 检查是否一切正常(因为这个项目使用 Oracle 作为数据库并且根据我的经验这个项目和 Oracle 有时会出现意外错误),我得到了我在问题中描述的错误。
在尝试了所有我能想到的之后,我突然想起了我在下载项目时收到的警告。
然后,我开始搜索如何检查项目中文件的编码,我得到 this answer (1) - this answer (2) 看起来也很有希望,但是,当我尝试并且 - 据我了解 - 第一个链接的答案说手动逐个文件制作这些步骤=这是不可行的;关于第二个链接的答案,我在.sln
或.csproj
文件中找不到位置。
我一直在 Google 上搜索并添加 visual studio check aspx encoding
,其中一个答案是 this answer,我在项目的 Site.master
上添加了这一行 - 因为所有页面都使用此母版页:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
当我执行解决方案/项目时,不间断的空格消失了,并且 DateTime 转换成功,如下面的屏幕截图所示:
【讨论】:
以上是关于Web开发中,如何在GridView每次绑定后将滚动条移动到下方?的主要内容,如果未能解决你的问题,请参考以下文章
求救: Gridview绑定数据时如何根据数据 显示相应图片。。。
删除 - (不间断空格) - 以某种方式添加到 GridView 的绑定值中