本文介绍了为什么空单元格SQL存储过程的执行过程中抛出一个错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
SELECT
CAST ([content_html] AS XML).query('/root/Physicians/specialty/a') AS [Specialty1]
, CAST ([content_html] AS XML).query('/root/Physicians/specialty2/a') AS [Specialty2]
, CAST ([content_html] AS XML).query('/root/Physicians/specialty3/a') AS [Specialty3]
, CAST ([content_html] AS XML).query('/root/Physicians/specialty4/a') AS [Specialty4]
, CAST ([content_html] AS XML).query('/root/Physicians/specialty5/a') AS [Specialty5]
, CAST ([content_html] AS XML).query('/root/Physicians/specialty6/a') AS [Specialty6]
FROM
[db].[dbo].[content]
WHERE
[folder_id] = '188'
AND
(content_status = 'A')
ORDER BY
[content_title]
ASP.net中继器(部分):
ASP.net repeater (partial):
<asp:Label ID="lblSpec1" runat="server"><%# Eval("Specialty1").ToString() + DisplayMultipleValues(Eval("Specialty2").ToString()) + DisplayMultipleValues(Eval("Specialty3").ToString()) + DisplayMultipleValues(Eval("Specialty4").ToString()) + DisplayMultipleValues(Eval("Specialty5").ToString()) + DisplayMultipleValues(Eval("Specialty6").ToString()) %></asp:Label>
C#(code处理多个条目,并添加了,
)
public string DisplayMultipleValues(string strValue)
{
return (NonBlankValueOf(strValue));
}
public string NonBlankValueOf(string source)
{
return (string.IsNullOrEmpty(source)) ? "" : ", " + source;
}
当我运行在SQL它工作正常查询(如果没有的列值,那么它就是一个空单元格),但通过code运行它的背后,给了我以下错误:
When I run the query in SQL it works fine (If there is not value for the column, then it is an empty cell) but running it through code behind, gives me the following error:
Server Error in '/' Application.
DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Specialty3'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Specialty3'.
Source Error:
Line 96: </div>
Line 97: <div class="optionRight">
Line 98: <asp:Label ID="lblSpec1" runat="server"><%# Eval("Specialty1").ToString() + DisplayMultipleValues(Eval("Specialty2").ToString()) + DisplayMultipleValues(Eval("Specialty3").ToString()) + DisplayMultipleValues(Eval("Specialty4").ToString()) + DisplayMultipleValues(Eval("Specialty5").ToString()) + DisplayMultipleValues(Eval("Specialty6").ToString()) %></asp:Label>
Line 99: </div>
Line 100: </div>
Source File: c:\er.aspx Line: 98
Stack Trace:
[HttpException (0x80004005): DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Specialty3'.]
System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +12523742
System.Web.UI.DataBinder.Eval(Object container, String[] expressionParts) +142
ASP.find_provider_aspx.__DataBind__control22(Object sender, EventArgs e) in c:\er.aspx:98
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +304
System.Web.UI.Control.DataBindChildren() +12746711
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +321
System.Web.UI.Control.DataBindChildren() +12746711
System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +321
System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +183
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +659
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +164
find_provider.Search() in c:\er.aspx.cs:294
find_provider.Page_Load(Object sender, EventArgs e) in c:\er.aspx.cs:37
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178
什么是解决这个问题的最好办法?
What is the best way to resolve it?
我试过如下:
<asp:Label ID="lblspec1" runat="server"><%# If(Eval("Specialty1").ToString() Is DBNull.Value, "", Eval("Specialty1").ToString()) + If(Eval("Specialty2").ToString() Is DBNull.Value, "", DisplayOffices(Eval("Specialty2").ToString())) + If(Eval("Specialty3").ToString() Is DBNull.Value, "", DisplayOffices(Eval("Specialty3").ToString())) + If(Eval("Specialty4").ToString() Is DBNull.Value, "", DisplayOffices(Eval("Specialty4").ToString())) + If(Eval("Specialty5").ToString() Is DBNull.Value, "", DisplayOffices(Eval("Specialty5").ToString())) + If(Eval("Specialty6").ToString() Is DBNull.Value, "", DisplayOffices(Eval("Specialty6").ToString())) %></asp:Label>
推荐答案
您可以添加像这样到code中的页面背后:
解决方案
You can add something like this to the code behind of the page:
,然后用MyEval全部替换Evals
and then replace all Evals with "MyEval":
<asp:Label ID="lblSpec1" runat="server"><%# MyEval("Specialty1").ToString() + DisplayMultiplMyEvalues(MyEval("Specialty2").ToString()) + DisplayMultiplMyEvalues(MyEval("Specialty3").ToString()) + DisplayMultiplMyEvalues(MyEval("Specialty4").ToString()) + DisplayMultiplMyEvalues(MyEval("Specialty5").ToString()) + DisplayMultiplMyEvalues(MyEval("Specialty6").ToString()) %></asp:Label>
这篇关于为什么空单元格SQL存储过程的执行过程中抛出一个错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!