System.Web.HttpException: 在所选数据源上找不到名称为 'Rfi_Id' 的字段或 属性
System.Web.HttpException: A field or property with the name 'Rfi_Id' was not found on the selected data source
我查看了网站上的其他答案,但似乎无法正常工作。
我正在尝试从两个 table 中提取数据并将结果加载到一个网格视图中。
这是我正在使用的代码:
private void DisplayReport()
{
string l_strsql = "";
l_strsql = " SELECT t_WebDAG_Rfi.Rfi_Id AS 'RFI ID #', " +
" t_WebDAG_Rfi.Record_Id AS 'Record ID', " +
" tbl_DemoData.UserPin AS 'User PIN', " +
" t_WebDAG_Rfi.Subject, " +
" t_WebDAG_Rfi.Rfi_Status_Type AS 'Status', " +
" t_WebDAG_Rfi.Request_By AS 'Initiator', " +
" t_WebDAG_Rfi.Request_Date AS 'Date Requested', " +
" t_WebDAG_Rfi.RFI_Comment AS 'Comments', " +
" t_WebDAG_Rfi.Form AS 'Form / Survey' " +
" FROM t_WebDAG_Rfi " +
" FULL OUTER JOIN tbl_DemoData " +
" on tbl_DemoData.RecNum=t_WebDAG_Rfi.Record_Id ";
SqlDataAdapter da = new SqlDataAdapter(l_strsql, strConnection);
DataSet ds = new DataSet();
da.Fill(ds);
DataRow dr;
ds.AcceptChanges();
grdvwReport.DataSource = ds.Tables[0];
grdvwReport.DataBind();
这是我的 .aspx table 视图:
<asp:datagrid id="grdvwReport" runat="server" BorderStyle="Outset"
BorderColor="Black" Width="800px"
Height="270px" ShowFooter="True" AutoGenerateColumns="False" BorderWidth="2px"
CssClass=".RightLine">
<FooterStyle HorizontalAlign="Center" ForeColor="White" BackColor="SteelBlue" Height="10" Font-Bold="True"></FooterStyle>
<AlternatingItemStyle HorizontalAlign="Center" BackColor="#DCDCDC"></AlternatingItemStyle>
<ItemStyle HorizontalAlign="Center" BackColor="WhiteSmoke" Height="10"></ItemStyle>
<HeaderStyle Font-Size="Smaller" Font-Bold="True" HorizontalAlign="Center" BorderWidth="4px"
ForeColor="White" BorderStyle="Outset" BackColor="SteelBlue" Height="10" Wrap="True"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="Rfi_Id" HeaderText="RFI ID #"><ItemStyle HorizontalAlign="Left"></ItemStyle></asp:BoundColumn>
<asp:BoundColumn DataField="Record_Id" HeaderText="Record ID"></asp:BoundColumn>
<asp:BoundColumn DataField="UserPin" HeaderText="User PIN"></asp:BoundColumn>
<asp:BoundColumn DataField="Subject" HeaderText="Subject"></asp:BoundColumn>
<asp:BoundColumn DataField="Rfi_Status_Type" HeaderText="Status"></asp:BoundColumn>
<asp:BoundColumn DataField="Request_By" HeaderText="Initiator"></asp:BoundColumn>
<asp:BoundColumn DataField="Request_Date" HeaderText="Date Requested"></asp:BoundColumn>
<asp:BoundColumn DataField="RFI_Comment" HeaderText="Comments"></asp:BoundColumn>
</Columns>
</asp:datagrid>
您正在为查询中的列设置别名:
t_WebDAG_Rfi.Rfi_Id AS 'RFI ID #'
但是您在代码中使用了实际的列名称:
DataField="Rfi_Id"
删除别名,它应该可以工作:
t_WebDAG_Rfi.Rfi_Id
您似乎在尝试使用别名来创建人类可读的列。但这是 UI 的工作,而不是查询。 UI 已经在这样做了。因此,只需通过不使用所有这些别名来简化查询。
我查看了网站上的其他答案,但似乎无法正常工作。
我正在尝试从两个 table 中提取数据并将结果加载到一个网格视图中。
这是我正在使用的代码:
private void DisplayReport()
{
string l_strsql = "";
l_strsql = " SELECT t_WebDAG_Rfi.Rfi_Id AS 'RFI ID #', " +
" t_WebDAG_Rfi.Record_Id AS 'Record ID', " +
" tbl_DemoData.UserPin AS 'User PIN', " +
" t_WebDAG_Rfi.Subject, " +
" t_WebDAG_Rfi.Rfi_Status_Type AS 'Status', " +
" t_WebDAG_Rfi.Request_By AS 'Initiator', " +
" t_WebDAG_Rfi.Request_Date AS 'Date Requested', " +
" t_WebDAG_Rfi.RFI_Comment AS 'Comments', " +
" t_WebDAG_Rfi.Form AS 'Form / Survey' " +
" FROM t_WebDAG_Rfi " +
" FULL OUTER JOIN tbl_DemoData " +
" on tbl_DemoData.RecNum=t_WebDAG_Rfi.Record_Id ";
SqlDataAdapter da = new SqlDataAdapter(l_strsql, strConnection);
DataSet ds = new DataSet();
da.Fill(ds);
DataRow dr;
ds.AcceptChanges();
grdvwReport.DataSource = ds.Tables[0];
grdvwReport.DataBind();
这是我的 .aspx table 视图:
<asp:datagrid id="grdvwReport" runat="server" BorderStyle="Outset"
BorderColor="Black" Width="800px"
Height="270px" ShowFooter="True" AutoGenerateColumns="False" BorderWidth="2px"
CssClass=".RightLine">
<FooterStyle HorizontalAlign="Center" ForeColor="White" BackColor="SteelBlue" Height="10" Font-Bold="True"></FooterStyle>
<AlternatingItemStyle HorizontalAlign="Center" BackColor="#DCDCDC"></AlternatingItemStyle>
<ItemStyle HorizontalAlign="Center" BackColor="WhiteSmoke" Height="10"></ItemStyle>
<HeaderStyle Font-Size="Smaller" Font-Bold="True" HorizontalAlign="Center" BorderWidth="4px"
ForeColor="White" BorderStyle="Outset" BackColor="SteelBlue" Height="10" Wrap="True"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="Rfi_Id" HeaderText="RFI ID #"><ItemStyle HorizontalAlign="Left"></ItemStyle></asp:BoundColumn>
<asp:BoundColumn DataField="Record_Id" HeaderText="Record ID"></asp:BoundColumn>
<asp:BoundColumn DataField="UserPin" HeaderText="User PIN"></asp:BoundColumn>
<asp:BoundColumn DataField="Subject" HeaderText="Subject"></asp:BoundColumn>
<asp:BoundColumn DataField="Rfi_Status_Type" HeaderText="Status"></asp:BoundColumn>
<asp:BoundColumn DataField="Request_By" HeaderText="Initiator"></asp:BoundColumn>
<asp:BoundColumn DataField="Request_Date" HeaderText="Date Requested"></asp:BoundColumn>
<asp:BoundColumn DataField="RFI_Comment" HeaderText="Comments"></asp:BoundColumn>
</Columns>
</asp:datagrid>
您正在为查询中的列设置别名:
t_WebDAG_Rfi.Rfi_Id AS 'RFI ID #'
但是您在代码中使用了实际的列名称:
DataField="Rfi_Id"
删除别名,它应该可以工作:
t_WebDAG_Rfi.Rfi_Id
您似乎在尝试使用别名来创建人类可读的列。但这是 UI 的工作,而不是查询。 UI 已经在这样做了。因此,只需通过不使用所有这些别名来简化查询。