我正在学习ASP.NET,有一个主从场景,在ASP.NET 3.5和C#中使用两个GridView。GridView grdOrders 列出了一组订单,GridView grdOrderDetails列出了一个订单的详细信息。我有一个主页面,其中定义了两个内容区域,代码如下:
<div class="leftColumn">
<asp:ContentPlaceHolder id="cphLeftSide" runat="server" />
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="cphRightSide" runat="server" />
</div>
在我的orders.aspx内容页面中,我已经将grdOrders GridView放置在cphLeftSide内容占位符中,将GridView grdOrderDetails放置在cphRightSide占位符中,代码如下:
<asp:Content ID="leftContent" ContentPlaceHolderID="cphLeftSide" runat="server">
<h2>Orders</h2>
<asp:GridView ID="grdOrders" DataSourceID="sdsOrders"...></asp:GridView>
<asp:SqlDataSource ID="sdsOrders" runat="server" ConnectionString="<%$ ConnectionStrings:csOrders %>"
SelectCommand="usp_GetOrders" SelectCommandType="StoredProcedure">></asp:SqlDataSource>
</asp:Content>
在右侧,我有类似以下代码的orderDetails内容:
<asp:Content ID="rightContent" ContentPlaceHolderID="cphRightSide" runat="server">
<h2>Order details</h2>
<asp:GridView ID="grdOrderDetails" DataSourceID="sdsOrderDetails"...></asp:GridView>
<asp:SqlDataSource ID="sdsOrderDetails runat="server"
ConnectionString="<%$ ConnectionStrings:csOrders %>"
SelectCommand="usp_GetOrderDetails" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter Name="orderId" ControlID="grdOrders" PropertyName="SelectedDataKey.Value" />
</SelectParameters>
</asp:Content>
当我运行代码时,出现以下错误:
服务器在“/Test2”应用程序中发生错误。 在ControlParameter 'orderId'中找不到控件'grdOrders'。 描述: 在当前Web请求的执行过程中发生未处理的异常。 请查看堆栈跟踪以获取有关该错误的更多信息以及 它在代码中的起源。 异常详细信息: System.InvalidOperationException: Could not find control 'grdOrders' in ControlParameter 'orderId'。
如何连接这两个数据源? 这样当我选择一个订单时,它就会运行usp_GetOrderDetails存储过程并绑定到grdOrderDetails GridView? 如果我将两个GridView和DataSources放在同一个位置,则代码可以正常运行。
<asp:Content>
标签。