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: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#(处理多个条目并添加一个的代码,
):
public string DisplayMultipleValues(string strValue)
{
return (NonBlankValueOf(strValue));
}
public string NonBlankValueOf(string source)
{
return (string.IsNullOrEmpty(source)) ? "" : ", " + source;
}
当我在 SQL 中运行查询时,它工作正常(如果该列没有值,则它是一个空单元格),但是通过后面的代码运行它,会出现以下错误:
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
解决这个问题的最佳方法是什么?
我尝试了以下方法:
<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>