在数据列表中嵌入网格视图
本文关键字:网格 视图 数据 列表 | 更新日期: 2023-09-27 18:34:36
>我有一个页面,该页面在数据列表的项模板中嵌入了一个网格视图。基本上每个父作业(即 74807(都有子作业(即 74807-1、74807-2(,每个子作业和父作业在数据库中都有一个与父作业对应的字段 (Top_Lvl_Job(。因此,在底部的代码中,您可以看到数据列表的数据源根据top_lvl_job字段拉取每个父作业和子作业。
网格视图数据源中的 select 命令出现问题。我希望它为循环中的每个作业提取路由信息。你会看到一些问号,我认为问题出在哪里。
我希望我解释得很好。
<!--Start Datalist Code-->
<asp:DataList ID="DataList1" runat="server" DataKeyField="Job" DataSourceID="sdsJobDetails">
<ItemTemplate>
<h3>Job Detail for <%# Eval("Job") %></h3>
<h4>Created By: <%# Eval("Last_Name") %></h4>
<br />
<table style="width: 100%;">
<tr>
<td style="width:400px;"><b>Part Number:</b> <%# Eval("Part_Number") %></td>
<td style="width:400px;"><b>Date Created:</b> <%# Eval("Order_Date") %></td>
<td style="width:400px;"><b>Type:</b> <%# Eval("Type") %></td>
</tr>
<tr>
<td><b>Revision:</b> <%# Eval("Rev") %></td>
<td><b>Quantity Ordered:</b> <%# Eval("Order_Quantity") %></td>
<td><b>Make Quantity:</b> <%# Eval("Make_Quantity") %></td>
</tr>
<tr>
<td><b>Description:</b> <%# Eval("Description") %></td>
<td><b>Unit Price:</b> $<%# Eval("Unit_Price") %></td>
<td><b>Pick Quantity:</b> <%# Eval("Pick_Quantity") %></td>
</tr>
<tr>
<td><b>Drawing Name:</b> <%# Eval("Drawing") %></td>
<td><b>Prepaid Amount:</b> <%# Eval("Prepaid_Amt") %></td>
<td><b>Completed Quantity:</b> <%# Eval("Completed_Quantity") %></td>
</tr>
<tr>
<td><b>Customer:</b> <%# Eval("Customer") %></td>
<td><b>Status:</b> <%# Eval("Status") %></td>
<td><b>Shipped:</b> <%# Eval("Shipped_Quantity") %></td>
</tr>
<tr>
<td><b>Ship Via:</b> <%# Eval("Ship_Via") %></td>
<td></td>
<td></td>
</tr>
</table>
<!--Start Embedded Gridview Code-->
<h3>Routing Info</h3>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="sdsRouting" ForeColor="#333333">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="WC_Vendor" HeaderText="Work Center" SortExpression="WC_Vendor" />
<asp:BoundField DataField="Operation_Service" HeaderText="Service" SortExpression="Operation_Service" />
<asp:BoundField DataField="Name" HeaderText="Vendor" SortExpression="Name" />
<asp:BoundField DataField="Sequence" HeaderText="Sequence" SortExpression="Sequence" />
<asp:BoundField DataField="Est_Run_Hrs" HeaderText="Estimated Hours" SortExpression="Est_Run_Hrs" />
<asp:BoundField DataField="Act_Run_Hrs" HeaderText="Actual Hours" SortExpression="Act_Run_Hrs" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
<asp:BoundField DataField="Job" HeaderText="Job" SortExpression="Job" Visible="False" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<!--End Embedded Gridview Code-->
</ItemTemplate>
</asp:DataList>
<!--End Datalist Code-->
<!--Datasource for Gridview-->
<asp:SqlDataSource ID="sdsRouting" runat="server" ConnectionString="<%$ ConnectionStrings:pppConnectionString %>" SelectCommand="SELECT * FROM [V_Job_Det_Routing] WHERE ([Job] = ???????) ORDER BY [Sequence]">
<SelectParameters>
<asp:QueryStringParameter Name="Job" QueryStringField="job" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<!--Datasource for Datalist-->
<asp:SqlDataSource ID="sdsJobDetails" runat="server" ConnectionString="<%$ ConnectionStrings:pppConnectionString %>" SelectCommand="SELECT * FROM [V_Job_Det_Jobs] WHERE ([Top_Lvl_Job] = @Top_Lvl_Job)">
<SelectParameters>
<asp:QueryStringParameter Name="Top_Lvl_Job" QueryStringField="job" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:Content>
这简直是雪上加霜。
经过更多的研究,我意识到网格视图的数据源正在寻找一个不正确的查询字符串。我假设选择参数应该是一个控制参数。我又玩了一会儿,想出了这个。不知道我是否靠近了。它仍然不起作用
新数据源
<asp:SqlDataSource ID="sdsRouting" runat="server" ConnectionString="<%$ ConnectionStrings:pppConnectionString %>" SelectCommand="SELECT * FROM [V_Job_Det_Routing] WHERE ([Job] = @job) ORDER BY [Sequence]">
<SelectParameters>
<asp:controlparameter Name="job" ControlID="lblJob" />
</SelectParameters>
</asp:SqlDataSource>
我从这里替换了页面顶部的文本:
<h3>Job Detail for <%# Eval("Job") %></h3>
对此:
<h3>Job Detail for <asp:Label ID="lblJob" runat="Server" Text='<%# Eval("Job") %>' /></h3>
应该有一个类似于 ItemDataBound 事件的东西,您可以处理该事件,当每一行绑定到其源时,该事件会为每一行触发。可以编写一些代码来查找子控件,并动态设置其数据源。