语境:
使用 RadGrid,您可以拥有内置的自动 CRUD 操作。但是这些操作似乎只能在源/父表上进行。
<asp:LinqDataSource ID="myLinqDataSource" runat="server"
ContextTypeName="ExempleDataContext" TableName="Order"/>
<telerik:RadGrid ID="myRadGrid" runat="server" DataSourceID="myLinqDataSource">
<MasterTableView .../>
</telerik:RadGrid>
虽然将能够显示 Parent 或 Child 的属性:
<telerik:GridBoundColumn DataField="CustomerId" HeaderText="CustomerId"
SortExpression="CustomerId" UniqueName="CustomerId"/>
<telerik:GridBoundColumn DataField="Product.Name" HeaderText="Product.Name"
SortExpression="Product.Name" UniqueName="Product.Name" />
并将它们绑定到您的 EditForm 中:
Customer Id :
<asp:TextBox ID="tb_CustomerId" runat="server"
Text='<%#Bind("CustomerId")%>' AutoPostBack="false" />
Product Name:
<asp:TextBox ID="tb_Product_Name" runat="server"
Text='<%#Bind("Product.Name")%>' AutoPostBack="false" />
但只有“父亲领域”(这里CustomerId
)得到更新。
当Product.Name
被忽略并且不抛出任何错误。
示例 Dbml 架构:
我尝试了什么:
- 将子主键添加到 Grid
DataKeyNames
。 - 添加
RetrieveDataTypeFromFirstItem="true"
, 以MasterTableView
试图强迫他从子项目中获取类型。 - 和经典的 Telerik vodoo,使用手动插入和 ItemCommand 事件结束。
铌:
- 就地和自动更新工作。只有模板化表单绑定失败。