Предположим, у меня есть эта таблица структуры:Игнорировать «Элемент с тем же ключом уже добавлен».
Для запроса ЗАПРОС как для таблицы, я создал представление с UNION.
В результате идентификационные данные для INVOICE_REQUEST_ID
и DELIVERY_REQUEST_ID
запрашиваются как REQUEST_ID
. Чтобы определить тип, я создал фиктивный флагREQUEST_TYPE
. Когда я пытаюсь привязать данные к GridView
, как я и предсказывал, возникает ошибка: Элемент с тем же ключом уже добавлен.
UPDATE
Я использую пользовательский GridView с этим с CheckBox на моем GridViewControl.ascx:
<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
. - Создайте фиктивный ключ для обоих типов запросов.
Разделяя код, используемый для сетки поможет вам сказать точно, что исправить – nunespascal
Ok сэр, позвольте мне обновите мой вопрос. –
'DataKeyName' - это свойство сетки, а не пользовательского элемента управления. вы можете открыть сетку как общедоступную и использовать что-то вроде: 'ucLAD.gvListing.DataKeyName =" YOUR_KEY ";' Установка на пользовательский элемент управления не будет работать. P.S: Просто я отвечаю на вопросы, не делает меня сэр. – nunespascal