2016-07-25 52 views
0

我想讓用戶在此網格視圖中選擇一行,並在窗體視圖中顯示一組關於該條目顯示的詳細信息。目前,我收到錯誤「無效的列名稱s.SprayId'」。我遇到過幾個問題,而且沒有想法。我已經在下面發佈了我的代碼。任何想法如何解決這個問題或更好的方法來做到這一點?謝謝。Formview顯示Gridview選定行的詳細信息的問題

<asp:GridView ID="gvHistory" runat="server" DataSourceID="dsHistory" AllowPaging="True" AllowSorting="True" CellPadding="4" ForeColor="#333333" GridLines="None" DataKeyNames="SprayId"> 
    <AlternatingRowStyle BackColor="White" ForeColor="#284775"></AlternatingRowStyle> 
    <Columns> 
     <asp:CommandField ShowSelectButton="True"></asp:CommandField> 
    </Columns> 
    <EditRowStyle BackColor="#999999"></EditRowStyle> 

    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White"></FooterStyle> 

    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White"></HeaderStyle> 

    <PagerStyle HorizontalAlign="Center" BackColor="#284775" ForeColor="White"></PagerStyle> 

    <RowStyle BackColor="#F7F6F3" ForeColor="#333333"></RowStyle> 

    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333"></SelectedRowStyle> 

    <SortedAscendingCellStyle BackColor="#E9E7E2"></SortedAscendingCellStyle> 

    <SortedAscendingHeaderStyle BackColor="#506C8C"></SortedAscendingHeaderStyle> 

    <SortedDescendingCellStyle BackColor="#FFFDF8"></SortedDescendingCellStyle> 

    <SortedDescendingHeaderStyle BackColor="#6F8DAE"></SortedDescendingHeaderStyle> 
</asp:GridView> 
<asp:SqlDataSource ID="dsHistory" runat="server" ConnectionString='<%$ ConnectionStrings:WSFConnectionString %>' SelectCommand="SELECT [SprayId], [Date], [TimeStart] FROM [Spray] WHERE ([Date] >= (GETDATE() - 7)) ORDER BY [Date] DESC, [TimeStart] DESC"></asp:SqlDataSource> 
<asp:FormView ID="fvHistoryDetail" runat="server" CellPadding="4" ForeColor="#333333" DataSourceID="dsHistoryDetail" DataKeyNames="SprayId"> 
    <EditItemTemplate> 
     SprayId: 
     <asp:Label Text='<%# Eval("SprayId") %>' runat="server" ID="SprayIdLabel1" /><br /> 
     <asp:LinkButton runat="server" Text="Update" CommandName="Update" ID="UpdateButton" CausesValidation="True" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="UpdateCancelButton" CausesValidation="False" /> 
    </EditItemTemplate> 

    <EditRowStyle BackColor="#999999"></EditRowStyle> 

    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White"></FooterStyle> 

    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White"></HeaderStyle> 

    <InsertItemTemplate> 
     <asp:LinkButton runat="server" Text="Insert" CommandName="Insert" ID="InsertButton" CausesValidation="True" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="InsertCancelButton" CausesValidation="False" /> 
    </InsertItemTemplate> 
    <ItemTemplate> 
     SprayId: 
     <asp:Label Text='<%# Eval("SprayId") %>' runat="server" ID="SprayIdLabel" /><br /> 

    </ItemTemplate> 

    <PagerStyle HorizontalAlign="Center" BackColor="#284775" ForeColor="White"></PagerStyle> 

    <RowStyle BackColor="#F7F6F3" ForeColor="#333333"></RowStyle> 
</asp:FormView> 
<asp:SqlDataSource ID="dsHistoryDetail" runat="server" ConnectionString='<%$ ConnectionStrings:WSFConnectionString %>' SelectCommand="SELECT s.SprayId as 'ID', [Date], TimeStart as 'Time Start', StartLocationDescription as 'Start', EndLocationDescription as 'End', v.VehicleNumber, (a.FirstName + a.LastName) as 'Applicator', c.TradeName as 'Chemical' FROM Spray s join Vehicle v on s.VehicleId = v.VehicleId join Applicator a on s.Applicator1Id = a.ApplicatorId join SprayChemicalsUsed scu on scu.SprayId = s.SprayId join ChemicalsUsed cu on scu.ChemUsedId = cu.ChemUsedId join Chemical c on cu.ChemId = c.ChemId WHERE ([s.SprayId] = @SprayId)"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="gvHistory" PropertyName="SelectedValue" DefaultValue="1" Name="SprayId" Type="Int32"></asp:ControlParameter> 
    </SelectParameters> 
</asp:SqlDataSource> 

回答

0

的問題是與你的選擇命令查詢:

SELECT s.SprayId as 'ID', [Date], TimeStart as 'Time Start', StartLocationDescription as 'Start', EndLocationDescription as 'End', v.VehicleNumber, (a.FirstName + a.LastName) as 'Applicator', c.TradeName as 'Chemical' FROM Spray s join Vehicle v on s.VehicleId = v.VehicleId join Applicator a on s.Applicator1Id = a.ApplicatorId join SprayChemicalsUsed scu on scu.SprayId = s.SprayId join ChemicalsUsed cu on scu.ChemUsedId = cu.ChemUsedId join Chemical c on cu.ChemId = c.ChemId WHERE ([s.SprayId] = @SprayId) 

是否列存在,並且是名稱是否正確將是檢查的第一件事。

我會在SQL管理查詢或任何你正在使用的數據庫工具中打開它,並讓它在那裏工作。應該很明顯,問題在於GUI會突出顯示SQL語法中的錯誤。

+0

謝謝你看看這個。我在SQL Management Studio中編寫了這個查詢,並且沒有任何語法問題。但是,它沒有返回所需的數據。而是讓每個列標題返回而沒有任何數據。 – MtheBass

+0

我剛剛注意到,dsHistoryDe​​tail的形式fvHistoryDe​​tail數據源將SprayId列別名作爲ID進行了別名,並且您在該形式中使用了「SprayId」的Evals –

+0

這是對的,但刪除或更改別名似乎對手頭的問題沒有影響。 – MtheBass