Я изучаю ASP.NET, и у меня есть сценарий мастер-детализации с использованием двух GridViews в ASP.NET 3.5 и C #. 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'.
Не удалось найти элемент управления 'grdOrders' в ControlParameter 'orderId'.
Описание: необработанное исключение произошло во время
выполнение текущего веб-запроса.
Пожалуйста, просмотрите трассировку стека для более
информация об ошибке и где
это произошло в коде.
Сведения об исключении: System.InvalidOperationException: Не удалось найти элемент управления grdOrders в ControlParameter 'orderId'.
Как мне соединить два источника данных? Чтобы при выборе заказа он запускал хранимую процедуру usp_GetOrderDetails и связывался с grdOrderDetails GridView? Код работает нормально, если я поместил и GridViews, и DataSources в один
<asp:Content>
бирка.