GridView、FromView、DetailsView实现主从表需要注意的几个细节
摘录自MSDN:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridview.selecteddatakey.aspx
取GridView1的属性SelectedDataKey作为Parameter,必须使用SelectedDataKey[i] 来指定是第几个值,否则会报类型不匹配的错误了。
如果GridView的SelectedDataKey有多个值,SelectedValue只会取第一个做为值。
不过DetailsView的SelectedDataKey有多个值,SelectedValue是可以取到多个值的。
下面的示例演示如何在主/从方案中将第二个键字段作为参数使用。使用 GridView 控件显示 Northwind 数据库的 Order Details 表中的记录。在 GridView 控件中选择某一记录时,将在 DetailsView 控件中显示来自 Products 表的产品详细信息。ProductID 是 GridView 控件中的第二个键名称。若要访问第二个键,请将 GridView1.SelectedDataKey[1] 的值用作 DetailsView 控件的 SqlDataSource 控件的 ControlParameter 对象的 PropertyName。
<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html ><head runat="server"><title>Selecting Data Key Values</title></head><body><form id="form1" runat="server"><div><asp:SqlDataSourceID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString%>"ProviderName="System.Data.SqlClient"SelectCommand="SELECT * FROM [Order Details]"></asp:SqlDataSource><asp:SqlDataSourceID="SqlDataSource2"runat="server"ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString%>"ProviderName="System.Data.SqlClient"SelectCommand="SELECT * FROM [Products]WHERE [ProductID] = @productid"><SelectParameters><asp:ControlParameterName="productid"ControlID="GridView1"PropertyName="SelectedDataKey[1]" /></SelectParameters></asp:SqlDataSource></div><asp:GridViewID="GridView1"runat="server"AllowPaging="True"AutoGenerateColumns="False"DataKeyNames="OrderID,ProductID" DataSourceID="SqlDataSource1"><Columns><asp:CommandField ShowSelectButton="True" /><asp:BoundField DataField="OrderID" HeaderText="OrderID" ReadOnly="True"/><asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" /><asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" /><asp:BoundField DataField="Quantity" HeaderText="Quantity" /><asp:BoundField DataField="Discount" HeaderText="Discount" /></Columns></asp:GridView><br /><asp:DetailsViewID="DetailsView1"runat="server"AutoGenerateRows="False"DataKeyNames="ProductID"DataSourceID="SqlDataSource2"Height="50px" Width="125px"><Fields><asp:BoundFieldDataField="ProductID"HeaderText="ProductID"InsertVisible="False"ReadOnly="True" /><asp:BoundField DataField="ProductName" HeaderText="ProductName"/><asp:BoundField DataField="SupplierID" HeaderText="SupplierID"/><asp:BoundField DataField="CategoryID" HeaderText="CategoryID" /><asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit" /><asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" /><asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" /><asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" /><asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" /><asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" /></Fields></asp:DetailsView></form></body></html>

浙公网安备 33010602011771号