【发布时间】:2015-01-29 10:17:19
【问题描述】:
我有几个使用主键关联在一起的表。当我想使用 GridView 和数据绑定显示表格时。 GridView 显示了对我没用的相关表的主键!我希望显示相关表的另一列(但我仍然希望能够使用相关表的行的 ID 进行编辑)。
<asp:GridView ID="GridView1" runat="server"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"
DataKeyNames="Id" DataSourceID="FaiulerDataSource">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
<asp:BoundField DataField="FaiulerDiscription" HeaderText="FaiulerDiscription" SortExpression="FaiulerDiscription" />
<asp:BoundField DataField="ShiftMaster" HeaderText="ShiftMaster" SortExpression="ShiftMaster" />
<asp:CheckBoxField DataField="Approval" HeaderText="Approval" SortExpression="Approval" />
<asp:BoundField DataField="RepairManId" HeaderText="RepairManId" SortExpression="RepairManId" />
<asp:BoundField DataField="OperatorId" HeaderText="OperatorId" SortExpression="OperatorId" />
<asp:BoundField DataField="Part_Id" HeaderText="Part_Id" SortExpression="Part_Id" />
<asp:BoundField DataField="Shift_Id" HeaderText="Shift_Id" SortExpression="Shift_Id" />
<asp:BoundField DataField="FaultType_Id" HeaderText="FaultType_Id" SortExpression="FaultType_Id" />
<asp:BoundField DataField="Machine_Id" HeaderText="Machine_Id" SortExpression="Machine_Id" />
<asp:BoundField DataField="RepairType_Id" HeaderText="RepairType_Id" SortExpression="RepairType_Id" />
</Columns>
</asp:GridView>
如您所见,Faiuler 表包含许多列。我还有其他名为RepairMan、Machines、Shift 等的表,因此此代码显示repairman_id,但我希望向用户显示RepairMan_Name,但我仍然需要RepairMan_id 进行编辑和删除东西。
更新:
这是 DataSource 的代码,可以告诉您如何更改它吗?我不太了解我使用向导创建数据源而不是编写代码。
<asp:SqlDataSource ID="FaiulerDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:WoodFactoryConnectionString %>"
SelectCommand="SELECT [Id], [Date], [FaiulerDiscription], [ShiftMaster], [Approval], [RepairManId], [OperatorId], [Part_Id], [Shift_Id], [FaultType_Id], [Machine_Id], [RepairType_Id] FROM [Failures] WHERE ([RepairManId] IS NULL)">
</asp:SqlDataSource>
【问题讨论】:
-
您可以将 `id' 绑定到标签并隐藏它,因此当您要删除或编辑时,您可以找到该标签。
-
没关系,但这并不能解决主要问题!我想显示 repairMan 的“名称”属性,而不是他的 ID,它不在故障表中,而是在 RepairMan 表中
-
好的,那么它们之间是否存在关系,如果是,您应该更改
select查询并加入该表,然后将其绑定到Name。 -
我不知道该怎么做!看看更新!这是我的第一个 ASP.Net 项目!而且我以前从未与 DB 合作过!
-
如果
RepairMan是单独的表,您应该更改FaiulerDataSource选择查询。
标签: asp.net data-binding