关于asp错误的null使用问题!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于asp错误的null使用问题!!相关的知识,希望对你有一定的参考价值。
数据库有null字段导致网页显示无效的null错误。
原有代码sql="select * from news where cstr(sclass)='"&cid&"' order by shijian desc",sclass字段获取变量与常量null冲突。
后改为sql="select * from news where sclass is not null order by shijian desc"后页面可以获取该字段不是null的数据可以获取字段中不是null 的数据集。
现增加sclass变量获取,代码为sql="select * from news where sclass is not null and cstr(sclass)='"&cid&"' order by shijian desc"意思为sclass 不为null同时sclass等于某一变量值。结果返回还是无效的null使用。请高手指 点下,满足我现有的条件。
“原有代码sql="select * from news where cstr(sclass)='"&cid&"' order by shijian desc",sclass字段获取变量与常量null冲突。”-----很明显传递过来的cid在数据库中没能查询到sclass对应的数值,出错是肯定的!
“sql="select * from news where sclass is not null order by shijian desc"”-----------这句理所当然能查询到所有sclass不为空的记录
“sql="select * from news where sclass is not null and cstr(sclass)='"&cid&"' order by shijian desc"”---------显然还是犯了何第一条一样的错误,逻辑上有错误的,你给的条件,在程序中无法满足,也就是说只有当cid传递过来的数值在数据库中有的时候才能显示,但是前提是你现在数据库中没有这个sclass,它的值为空,
============解决办法、==========
加个on error resume next在网页头部试试,因为asp有时候有这样的错误,就是当你在以前已经拥有数据的数据库中新建了某个以前没有的字段,字段是建立起来了,而且新添加的记录里面也能往这个字段里面添加数据,但是当你查询以前的文章,由于以前没有这个字段,所以这个字段为空,不管你程序如何写,他都出错,有点类似你这个问题,要么就吧以前的数据这个为空的字段人工的一条条添加进去,要么就加on error resume next来容错处理,但是你的问题终将是因为数据库中sclass为空造成的,所以只能建议你这样写一个判断
Set rs =server.createobject("adodb.recordset")
sql="select * from news where cstr(sclass)='"&cid&"' order by shijian desc"‘一定要去掉那句sclass is not null,因为这个是逻辑错误
rs.open sql,conn,1,1
if rs.eof then '按照上面的语句查询记录,如果这个条件下,没有查询到数据就提示
response.write "对不起,没有查询到数据,可能是sclass为空,或者传递过来的cid在数据库中根本不存在!"
else
....
end if
祝你成功,只能想到这样解决了! 参考技术A 给sclass一个默认的值比如 空格 或者 0,这样sclass就不会出现null了。也不会影响你的程序结构。 参考技术B 1楼说的好多,但是问题我感觉出在cstr上,SQL首先对字段进行了处理,当巧合的是首先遇到了空值,所以我的意见是不在SQL语句中进行处理,比如说sclass的字段类型,如数值型,SQL语句这么写
="select * from news where sclass="&val(cid)&" order by shijian desc"
这样就不存在对NULL进行的操作,可以避免这个错误! 参考技术C 在查询之间做个判断,这样就不用在sql语句中限制了。
if not(isnull(cid) or cid="") then
sql="select * from news where sclass="&cid&" order by shijian desc"
end if
试试吧
ASP.NET DataGrid ClientID 值返回 null
【中文标题】ASP.NET DataGrid ClientID 值返回 null【英文标题】:ASP.NET DataGrid ClientID value returning null 【发布时间】:2017-02-23 05:55:52 【问题描述】:我看到有很多关于在 ASP.NET 中获取 ClientID 的问题,但我查看的所有问题都对我的方案没有帮助。我对 ASP.NET 有点陌生,在 JavaScript 中获取 DataGrid 的 ClientID 时遇到问题。
希望这个论坛的人能帮我找到方法。
在我的 aspx 页面上,我有一个数据网格:
<div class="tblgrid" id="divItems">
<asp:DataGrid ID="dgItems" runat="server" AutoGenerateColumns="False" GridLines="None">
<Columns>
<asp:BoundColumn HeaderText="EmpId" DataField="EmpId">
</asp:BoundColumn>
<asp:BoundColumn HeaderText="F_Name" DataField="F_Name">
</asp:BoundColumn>
<asp:BoundColumn HeaderText="L_Name" DataField="L_Name">
</asp:BoundColumn>
<asp:BoundColumn DataField="City" HeaderText="City">
</asp:BoundColumn>
.....
</Columns>
当我在我的 JavaScript 中使用以下内容时,它会在警报消息中返回适当的表格内部 HTML。
alert(document.getElementById('ct100_PageContent_dgItems').innerHTML);
但是当我使用 ASP.NET ClientID 时,我得到了一个空值异常,因为它抛出了一个空值。
alert(document.getElementById('<%=dgItems.ClientID %>').innerHTML);
任何人都可以在这方面帮助我。
提前致谢。
【问题讨论】:
查看此时页面上实际呈现的内容<%=dgItems.ClientID %>
。也许你早点打电话,id还没有制作...
ct100_PageContent_dgItems 是我在浏览器中的页面源上获取的 id,我同时使用 chrome 浏览器控制台和 javascript 文件来查看它是否返回任何内容.但 null 是它目前提供的唯一值。
您在这里做错了什么,使用该代码我们找不到它。如果你可能有它在线我们可以看到它,但你需要调试它并找到你的错误......
【参考方案1】:
如果document.getElementById('<%=dgItems.ClientID %>')
与 aspx 页面的 JS 文件位于单独的 JS 文件中,则 ASP.Net 引擎将无法解析引用。它仅适用于嵌入在 .aspx 页面中的脚本。
但是,一个解决方案是,如果您没有在页面上复制 DataGrid,那么您可以使用 ClientIDMode="static"
给它一个静态 ID:
<asp:DataGrid ID="dgItems" ClientIDMode="static" runat="server" AutoGenerateColumns="False" GridLines="None">
然后引用它
document.getElementById('dgItems')
【讨论】:
【参考方案2】:代替
alert(document.getElementById('<%=dgItems.ClientID %>').innerHTML);
.. 你可以给 DataGrid 一个 CSS 类,例如 'dgrid' 并使用 jQuery 类选择器在客户端找到它?
【讨论】:
以上是关于关于asp错误的null使用问题!!的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 控件的 JavaScript getElementById 返回 null?
ASP.NET DataGrid ClientID 值返回 null