将某些代码移动到服务器时遇到问题。代码在我的本地计算机上正常运行。我在本地计算机上访问此属性没有问题。但是,当我将其上传到我的开发服务器时,我收到此错误:
在选定的数据源中找不到名为“CreatedBy.FullName”的字段或属性。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.Web.HttpException:在所选数据源上找不到名为“CreatedBy.FullName”的字段或属性。 来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈追踪:
[HttpException(0x80004005):在所选数据源上找不到名为“CreatedBy.FullName”的字段或属性。 System.Web.UI.WebControls.BoundField.GetValue(Control controlContainer)+1788095 System.Web.UI.WebControls.BoundField.OnDataBindField(Object sender,EventArgs e)+67 System.Web.UI.Control.OnDataBinding(EventArgs e)+91 System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)+92 System.Web.UI.Control.DataBind()+15 System.Web.UI.Control.DataBindChildren()+ 201 System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)+101 System.Web.UI.Control.DataBind()+15 System.Web.UI.WebControls.GridView.CreateRow(Int32 rowIndex,Int32 dataSourceIndex,DataControlRowType rowType,DataControlRowState rowState,Boolean dataBind,Object dataItem,DataControlField [] fields,TableRowCollection rows,PagedDataSource pagedDataSource)+166 System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource,Boolean dataBinding)+3098 System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data)+66 System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data)+14 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data)+128 System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments,DataSourceViewSelectCallback callback)+33 System.Web.UI.WebControls.DataBoundControl.PerformSelect()+ 143 System.Web.UI.WebControls.BaseDataBoundControl.DataBind()+ 74 System.Web.UI.WebControls.GridView.DataBind()+ 4 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()+66 System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls()+75 System.Web.UI.Control.EnsureChildControls()+ 102 System.Web.UI.Control.PreRenderRecursiveInternal()+ 42 System.Web.UI.Control.PreRenderRecursiveInternal()+ 175 System.Web.UI.Control.PreRenderRecursiveInternal()+ 175 System.Web.UI.Control.PreRenderRecursiveInternal()+ 175 System.Web.UI.Control.PreRenderRecursiveInternal()+ 175 System.Web.UI.Control.PreRenderRecursiveInternal()+ 175 System.Web.UI.Control.PreRenderRecursiveInternal()+ 175 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+2496
这是aspx页面的样子(剪辑):
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" DataKeyNames="ApplicationID" CellPadding="4" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
<asp:HyperLinkField DataNavigateUrlFields="applicationID" DataNavigateUrlFormatString="~/Admin/ManageRoles.aspx?applicationID={0}" Text="View App Roles" />
<asp:HyperLinkField DataNavigateUrlFields="applicationID" DataNavigateUrlFormatString="~/Admin/ManageApplicationUsers.aspx?applicationID={0}" Text="View App Users" />
<asp:BoundField DataField="ApplicationID" HeaderText="ApplicationID" ReadOnly="True" SortExpression="ApplicationID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:TemplateField HeaderText="Description" SortExpression="Description">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Description") %>' TextMode="MultiLine"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CreatedBy.FullName" HeaderText="Created By" SortExpression="CreatedByID" ReadOnly="True" />
<asp:BoundField DataField="CreatedDate" HeaderText="CreatedDate" ReadOnly="True" SortExpression="CreatedDate" />
<asp:BoundField DataField="ModifiedBy.FullName" HeaderText="Modified By" SortExpression="ModifiedByID" NullDisplayText="<i>null</i>" ReadOnly="True" />
<asp:BoundField DataField="ModifiedDate" HeaderText="ModifiedDate" ReadOnly="True" SortExpression="ModifiedDate" NullDisplayText="<i>null</i>" />
</Columns>
<!-- SNIP: styling -->
</asp:GridView>
更新 我已经通过使用解决方法运行了我的代码。如果我使用模板字段而不是绑定字段,它将运行。例如,我用这个:
<asp:TemplateField HeaderText="Description" SortExpression="Description">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("CreatedBy.FullName") %>' TextMode="MultiLine"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("CreatedBy.FullName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
而不是:
<asp:BoundField DataField="CreatedBy.FullName" HeaderText="Created By" SortExpression="CreatedByID" ReadOnly="True" />
我很高兴它现在正在工作,但坦率地说,我想知道问题是什么!
答案 0 :(得分:1)
你的问题的答案是:
BoundField
将datasource
中的信息显示为文字,TemplateField
允许混合使用HTML
,WebControls
}还有data-binding
语法。