我正在学习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放在cphLeightSide内容占位符和cphRightSide占位符中的GridView grdOrderDetails中,代码如下:
<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:无法在ControlParameter'orderId'中找到控件'grdOrders'。
如何连接两个数据源?因此,当我选择一个订单时,它运行usp_GetOrderDetails存储过程并绑定到grdOrderDetails GridView?如果我将GridViews和DataSources放在同一个
中,代码运行正常<asp:Content>
标签
答案 0 :(得分:2)
当您选择Order gridview时(无论事件被调用 - onSelected或其他什么),请在代码隐藏中执行此操作:
这只是伪装,但希望足够清楚。
答案 1 :(得分:1)
试试此代码
<SelectParameters>
<asp:ControlParameter Name="orderId" ControlID="cphLeftSide$grdOrders" PropertyName="SelectedDataKey.Value" />
</SelectParameters>
那是因为你的问题是在参数参数中找不到“grdorders”所以你可以使用$来使参数在同一页面上的其他内容占位符中查找
答案 2 :(得分:0)