次のテーブル構造があるとします。
両方のテーブルのREQUESTをクエリするために、 UNIONを使用してビューを作成しました。
その結果、 と の両方の IDINVOICE_REQUEST_ID
がDELIVERY_REQUEST_ID
として照会されREQUEST_ID
ます。タイプを識別するために、ダミーのフラグ REQUEST_TYPE
を作成しました。データを にバインドしようとすると、GridView
予想どおり、エラーが発生します。同じキーを持つ項目が既に追加されています。
アップデート
私は GridViewControl.ascx の CheckBox でこれでカスタム GridView を使用します:
<asp:Panel ID="pnlPc" runat="server" CssClass="div-grid" ScrollBars="Auto">
<asp:GridView ID="gvListing" runat="server" AllowPaging="True" AutoGenerateSelectButton="true"
OnRowDataBound="gvListing_RowDataBound" skinid="gvListing"
onselectedindexchanged="gvListing_SelectedIndexChanged"
onpageindexchanging="gvListing_PageIndexChanging" PageSize="50" >
<FooterStyle CssClass="grid-footer" />
<Columns>
<asp:TemplateField HeaderText="CheckAll">
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" runat="server" AutoPostBack="true"
OnCheckedChanged="chkSelectAll_CheckedChanged" CssClass="select-all"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true"
OnCheckedChanged="chkSelect_CheckedChanged" CssClass="listing-checkbox"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:Panel>
そして、次の C# コードでデータをバインドします。
//assuming that ucLAD is the CustomGridView
ucLAD.DataKeyName = def.ID_REQUEST; // here I assign the DataKeyName
ucLAD.BindGrid(dt); //dt is a datatable that contains my view
私の決意は次のとおりです。
- try-catch のエラーを無視します。(これどうやってするの?)
- との複合キーを作成し
REQUEST_ID
ますREQUEST_TYPE
。 - 両方のリクエスト タイプのダミー キーを作成します。