|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。asp.net|初级|数据 在后面的文章中,我们已晓得怎样将ControlParameter(控件参数)与GridView的SelectedValue属性相干联以完成主-从数据表。SelectedValue属性前往DataKeyNames属性所指定的第一个字段的值。你也能够给DataKeyNames属性指定多个用逗号分开的字段值,比方,你大概必要把多个值传送到从表的数据源。这些分外的键字段值是经由过程SelectedDataKey属性表露的,它前往一个DataKey工具,包括键字段的称号/值对(pair)。经由过程在表达式中设置PropertyName属性(比方SelectedDataKey.Values("title_id")),ControlParameter乃至于能够援用这些键。
<asp:ControlParameterName="FirstKey"ControlID="MasterGrid"PropertyName="SelectedDataKey.Values[0]"/>
<asp:ControlParameterName="SecondKey"ControlID="MasterGrid"PropertyName="SelectedDataKey.Values[1]"/>
上面的例子演示的代码列举了DataKeys汇合,并从GridView的SelectedDataKey中猎取键字段的值:
ProtectedSubGridView1_SelectedIndexChanged(ByValsenderAsObject,ByValeAsSystem.EventArgs)
Response.Write("<b>SelectedDataKey.Value:</b>"&Server.HtmlEncode(GridView1.SelectedDataKey.Value)&"<br/>")
Response.Write("<b>DataKeyField1:</b>"&Server.HtmlEncode(GridView1.SelectedDataKey.Values("au_id"))&"<br/>")
Response.Write("<b>DataKeyField2:</b>"&Server.HtmlEncode(GridView1.SelectedDataKey.Values("title_id"))&"<br/>")
EndSub
ProtectedSubGridView1_DataBound(ByValsenderAsObject,ByValeAsSystem.EventArgs)
DimkeyAsDataKey
Response.Write("<b>GridViewDataKeys:</b><br/>")
ForEachkeyInGridView1.DataKeys
Response.Write(Server.HtmlEncode(key.Values(0))&",")
Response.Write(Server.HtmlEncode(key.Values(1))&"<br/>")
Next
EndSub
后面的主-从暗示例把从表的数据显现在窗体的一个自力的控件中,可是偶然候我们但愿从表控件是嵌套在主表控件上,作为主表的一部分来显现的。为了完成这类功效,你必需把从表控件和相干的数据源都包括到主表控件的模板中,并带有一个数据源参数,让该参数从主表数据源的字段中猎取值。因为利用这类体例的时分,没有可供联系关系的宣布式参数工具,你必需经由过程在代码中编程来设置参数值。当主表控件的数据项举行绑定的时分,你能够在主表控件的某个事务处置(比方FormView的DataBound事务)中设置参数值。上面的例子演示了这类手艺。
<scriptrunat="server">
ProtectedSubFormView1_DataBound(ByValsenderAsObject,ByValeAsSystem.EventArgs)
OrderDetailsDataSource.SelectParameters("OrderID").DefaultValue=FormView1.DataItem("OrderID")
EndSub
</script>
<asp:FormViewDataSourceID="OrdersDataSource"……>
<ItemTemplate>
<b>OrderID:</b>
<asp:LabelID="OrderIDLabel"runat="server"Text=<%#Eval("OrderID")%>></asp:Label><br/>
……
<asp:GridViewDataSourceID="OrderDetailsDataSource"……>
……
</asp:GridView>
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSourceConnectionString="<%$ConnectionStrings:Northwind%>"ID="OrdersDataSource"runat="server"SelectCommand="SELECT[OrderID],[OrderDate],[ShipCity],[ShipCountry]FROM[Orders]">
</asp:SqlDataSource>
<asp:SqlDataSourceConnectionString="<%$ConnectionStrings:Northwind%>"ID="OrderDetailsDataSource"runat="server"SelectCommand="SELECT[OrderDetails].OrderID,Products.ProductName,[OrderDetails].UnitPrice,[OrderDetails].QuantityFROM[OrderDetails]INNERJOINProductsON[OrderDetails].ProductID=Products.ProductIDWHERE[OrderDetails].OrderID=@OrderID">
<SelectParameters>
<asp:ParameterName="OrderID"/>
</SelectParameters>
</asp:SqlDataSource>
上面的例子演示了相似的手艺,它利用的是DataList,处置DataList的ItemDataBound事务来设置数据源参数值。
<scriptrunat="server">
ProtectedSubDataList1_ItemDataBound(ByValsenderAsObject,ByValeAsSystem.Web.UI.WebControls.DataListItemEventArgs)
DimsAsSqlDataSource=e.Item.FindControl("OrderDetailsDataSource")
s.SelectParameters("OrderID").DefaultValue=e.Item.DataItem("OrderID")
EndSub
</script>中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。 |
|