【问题标题】:System.Web.HttpException: A field or property with the name 'Rfi_Id' was not found on the selected data sourceSystem.Web.HttpException:在所选数据源上找不到名为“Rfi_Id”的字段或属性
【发布时间】:2015-10-03 04:23:33
【问题描述】:

我已经浏览了网站上的其他答案,但似乎无法让它发挥作用。

我正在尝试从两个表中提取数据并将结果加载到一个网格视图中。

这是我正在使用的代码:

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 表格视图:

<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>

【问题讨论】:

    标签: asp.net gridview datagrid sql-server-2008-r2


    【解决方案1】:

    您正在为查询中的列设置别名:

    t_WebDAG_Rfi.Rfi_Id AS 'RFI ID #'
    

    但是你在代码中使用了实际的列名:

    DataField="Rfi_Id"
    

    删除别名,它应该可以工作:

    t_WebDAG_Rfi.Rfi_Id
    

    您似乎正在尝试使用别名来创建人类可读的列。但这是 UI 的工作,而不是查询。 UI 已经在这样做了。因此,只需通过不使用所有这些别名来简化查询。

    【讨论】:

    • 非常感谢。感谢您的快速响应。
    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多