Поле или свойство с именем 'Id' не найдено в выбранном источнике данных

Я не уверен, что мне здесь не хватает? Я только что изменил свое заявление SQL, и теперь он говорит, что он не читает "ID", может кто-нибудь, пожалуйста, помогите мне?

вот мой HTML-код:

<asp:GridView ID="gvCustomerOrders" runat="server" Width="940px"  HorizontalAlign="Center"
    AutoGenerateColumns="false"   AllowPaging="True" CssClass="table table-hover table-striped" OnPageIndexChanging="gvCustomerOrders_PageIndexChanging">

<Columns>
                    <asp:BoundField DataField ="Id" HeaderText ="Id" ItemStyle-Width="100" >
                    <ItemStyle Width="100px"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField DataField ="CustomerName" HeaderText ="Name" />    
                    <asp:BoundField DataField ="CustomerPhoneNo" DataFormatString= "{0:(###) ###-####}" HeaderText ="PhoneNo" />
                    <asp:BoundField DataField ="CustomerEmailID" HeaderText ="Email" />
                    <asp:BoundField DataField ="Name" HeaderText ="Product" />
                    <asp:BoundField DataField ="TotalPrice" DataFormatString="{0:C2}" HeaderText ="Price" />


                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl ='<%# Eval("Id", "~/Admin/OrderDetails.aspx?Id={0}") %>'
                                Text="View Details" Target="_blank" />
                        </ItemTemplate>
                        </asp:TemplateField>
</Columns>

и код позади:

public void bindgrid()
    {
        SqlConnection conn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True");
        SqlCommand cmd = new SqlCommand("select DISTINCT STUFF((SELECT ',' + p.[name] FROM  Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id", conn);

        SqlDataAdapter da = new SqlDataAdapter("", conn);
        da.SelectCommand = new SqlCommand("select DISTINCT STUFF((SELECT ',' + p.[name] FROM  Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id", conn);
        DataSet ds = new DataSet();
        da.Fill(ds, "data");
        gvCustomerOrders.DataSource = ds.Tables[0].DefaultView;
        gvCustomerOrders.DataBind();
    }

действительно потерял на этом, почему это дает мне ошибку

A field or property with the name 'Id' was not found on the selected data source.

2 ответа

Решение

Ваш запрос:

select DISTINCT STUFF((SELECT ',' + p.[name] FROM  Products p INNER JOIN CustomerProducts cp ON cp.ProductID = p.ProductID WHERE cp.CustomerID = cd.Id FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,1,'') AS Name, cd.CustomerName, cd.CustomerEmailID ,cd.CustomerPhoneNo,cd.CustomerAddress ,cd.TotalPrice,cd.OrderDateTime, cd.PaymentMethod FROM CustomerDetails cd Inner Join CustomerProducts cp ON cp.CustomerID = cd.Id

не возвращает столбец с именем 'Id'

но ты обязателен Id колонка здесь:

<asp:BoundField DataField ="Id" HeaderText ="Id" ItemStyle-Width="100" >

Я предполагаю, что вам просто нужно включить столбец "Id" из таблицы клиентов в ваш запрос:

select DISTINCT Id, STUFF((......

Увидимся <asp:BoundField../> с DataField ="Id" и используемый вами запрос не получит ни одного столбца с именем "Id, Если вы выбираете этот столбец означает, что эта ошибка будет решена. Или удали это BoundField из внешнего интерфейса, если он не нужен в этом сценарии.

Примечание:- Вы должны предоставить все указанные DataFields в коллекции привязок, что означает, что вы должны получить эти столбцы через запрос

Другие вопросы по тегам