Как привязать метку внутри сетки к другой таблице?

У меня очень стандартный Gridview с автоматически сгенерированными кнопками "Изменить" и "Удалить". Он привязан к tableadapter, который связан с моей таблицей RelationshipTypes.

dbo.RelationshipTypes:
ID, Name, OriginConfigTypeID, DestinationConfigTypeID

Я хочу использовать метку, которая будет извлекать имя из таблицы ConfigTypes, используя OriginConfigTypeID и DestinationTypeID в качестве ссылки.

dbo.ConfigTypes:
ID, Name

Моя проблема в том, что я не могу автоматически генерировать кнопки «Изменить» и «Удалить», используя Inner Join в своем наборе данных. Или я могу?

Вот мой код:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
        AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" CssClass="TableList"
        DataKeyNames="ID" DataSourceID="dsRelationShipTypes1">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                SortExpression="ID" Visible=False/>
            <asp:TemplateField HeaderText="Origin" SortExpression="OriginCIType_ID">
                <EditItemTemplate>
                    &nbsp;<asp:DropDownList Enabled=true ID="DropDownList2" runat="server" DataSourceID="dsCIType1"
                        DataTextField="Name" DataValueField="ID" SelectedValue='<%# Bind("OriginCIType_ID") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>
                <ItemTemplate>
                    &nbsp;
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("OriginCIType_ID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name" SortExpression="Name">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label3" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Destination" SortExpression="DestinationCIType_ID">
                <EditItemTemplate>
                    <asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="dsCIType1" DataTextField="Name"
                        DataValueField="ID" SelectedValue='<%# Bind("DestinationCIType_ID") %>'>
                    </asp:DropDownList>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("DestinationCIType_ID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
</asp:GridView>

Поэтому я попытался создать свои собственные кнопки редактирования и удаления, но продолжал получать сообщение об ошибке

"не могу найти метод обновления"

или что-то подобное. Должен ли я вручную кодировать методы удаления и обновления в моем коде программной части?


person Kolten    schedule 03.11.2008    source источник
comment
Чтобы автоматически сгенерировать кнопку редактирования и удаления, источник данных, связанный с gridview, должен иметь запрос на обновление и запрос на удаление, определенные в его разметке или с помощью кода. Для Updates и Deletes потребуется первичный ключ, обычно определяемый свойством Gridviews DatakeyNames, которое в конечном итоге передается соответствующим параметрам запроса вместе с любыми связанными полями.   -  person fnostro    schedule 14.05.2018


Ответы (2)


Вы должны указать либо ObjectDataSource, какой объект использовать, либо SQLDataSource, какую хранимую процедуру использовать. Используйте атрибут «UpdateMethod».

person craigmoliver    schedule 04.11.2008

Вы можете использовать код позади техники, чтобы упомянуть о том, какой метод может обрабатывать функцию обновления и удаления. Это стандартный способ сделать это. Вы можете использовать Sqldatasorce для описания источника. Вы можете указать, какие все таблицы используются для внутреннего соединения, а также можете использовать SQL-запрос.

person Prabitha    schedule 19.11.2014