0

それらの主キー名がそれらのテーブルで異なる場合、データキー名を使用して異なるテーブルの主キーにアクセスする方法があるかどうか疑問に思っています。

たとえば、主キーがそれぞれ Table1ID と Table2ID である Table1 と Table2 というテーブルがあります。

私の最終的な目標は、両方のテーブルの内容を 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 コードでは、DataField に一貫性がないため、これを BoundField に設定できますか? Table2ID を無視しているため、次のことはできません。

  <asp:BoundField DataField="Table1ID"/>

多分私はtemplateFieldか何かを使う必要がありますか?

4

2 に答える 2

1

以下のコードのように templatefield を使用できます

 <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また、選択ステートメントをそのプロパティに割り当ててプロパティに渡すと、労力が軽減される場合がありGridView.DataSourceます。ほんの数行のコードで作業が完了します。よろしく、AB

于 2013-05-08T04:30:34.353 に答える