C# 如何跨<;链接GridView控件;asp:内容>;占位符?
我正在学习ASP.NET,我有一个使用ASP.NET 3.5和C#中的两个GridView的主细节场景。GridView grdOrders列出一组订单,GridView grdOrderDetails列出一组订单详细信息。我有一个母版页,它使用此代码定义了两个内容区域:C# 如何跨<;链接GridView控件;asp:内容>;占位符?,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在学习ASP.NET,我有一个使用ASP.NET 3.5和C#中的两个GridView的主细节场景。GridView grdOrders列出一组订单,GridView grdOrderDetails列出一组订单详细信息。我有一个母版页,它使用此代码定义了两个内容区域: <div class="leftColumn"> <asp:ContentPlaceHolder id="cphLeftSide" runat="server" /> </div>
<div class="leftColumn">
<asp:ContentPlaceHolder id="cphLeftSide" runat="server" />
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="cphRightSide" runat="server" />
</div>
在我的orders.aspx内容页面上,我将grdOrders GridView放在CPHLEFSIDE内容占位符中,GridView GRDORDERDERDETERS放在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>
<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>
命令
>
在右侧,我有orderDetails内容,代码如下:
<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>
<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>
订单详情
首先想到的解决方案是使用代码隐藏。在Page.Init
中,尝试:
grdOrders.DataSource = sdsOrderDetails
同样,您很可能必须枚举select参数集合并显式关联控件
更新:您甚至可以尝试匹配
控件的ID属性,Visual Studio可能会抱怨,但很有可能它们不会作为命名容器。当您的Order gridview被选中时(无论事件名为--onSelected或其他什么),在代码隐藏中执行此操作:
- sdsOrderDetails.parameters(“orderID”).defaultvalue=grdOrders.selectedvalue
这只是psuedo,但希望足够清晰。试试这段代码
<SelectParameters>
<asp:ControlParameter Name="orderId" ControlID="cphLeftSide$grdOrders" PropertyName="SelectedDataKey.Value" />
</SelectParameters>
这是因为您的问题在于refer参数找不到“grdorders”,因此您可以使用$使参数在同一页面上的其他内容占位符中查找