0

我想知道如果这些表中的主键名称不同,是否有一种方法可以使用 datakeynames 来访问不同表的主键。

例如,我有一个名为 Table1 和 Table2 的表,其中主键分别是 Table1ID 和 Table2ID。

我的最终目标是将两个表的内容合并到 1 个网格视图中,并为每一行生成一个超链接。所以我的 c# 看起来像这样:

 protected void Page_Load(object sender, EventArgs e)
 {
    SqlCommand command = new SqlCommand("(SELECT Table1ID, Title FROM Table1" +
                                             "UNION ALL SELECT Table2ID, Title FROM Table2)", connection);

 GridView1.DataBind();
}

然后在我的 Gridview_Databound 方法中,我会单独为每一行设置超链接。问题是如何访问 Table1ID 和 Table2ID?在我的 .aspx 代码中,我可以将其设置为 BoundField,因为 DataField 不一致吗?我不能只执行以下操作,因为它会忽略 Table2ID 对吗?

  <asp:BoundField DataField="Table1ID"/>

也许我需要使用 templateField 之类的?

4

2 回答 2

1

您可以使用以下代码的模板字段

 <asp:TemplateField HeaderText="Action">
 <ItemTemplate>
   <asp:LinkButton runat="server" ID="lnkEdit" ToolTip="Click to edit" CommandName="EditContent" CommandArgument='<%# Eval("Table1ID") %>' />    
 </ItemTemplate>
 </asp:TemplateField>

现在在您的 OnRowCommand="GridView1_RowCommand" 上,您将获得此表的 pk id。

于 2013-05-08T07:46:50.573 回答
0

GridView控制中,您可以拥有一个TemplateField包含Hyperlink(有关此解决方案的详细信息,请参阅我的文章的链接)。

此外,如果您使用SqlDataSource将 select 语句分配给其属性并将其传递给GridView.DataSource属性,则可能会减少劳动强度。只需几行代码即可为您完成工作。问候, AB

于 2013-05-08T04:30:34.353 回答