Ошибка при удалении строки из AJAX с включенным GridView - PullRequest
1 голос
/ 03 июля 2010

Я пытаюсь выяснить, почему я могу нормально редактировать внутри своего gridview, но моя команда delete выдает ошибку сервера.

Сообщение об ошибке, которое я получаю при обратной передаче AJAX при удалении, выглядит следующим образом:


208 | error | 500 | Свойство с именем 'Member.fullname' не найдено в объекте во время операции вставки, обновления или удаления. Убедитесь, что свойства, указанные в качестве выражений привязки, доступны для источника данных. |


Этого не происходит, когда я выполняю команду «Правка», которая прекрасно работает.

У меня есть 3 объекта (задача, участник, проект).

В моем Gridview для отображения таблицы задач у меня есть поля шаблона, настроенные для отображения удобных для пользователя данных вместо идентификационных номеров:

<asp:GridView ID="TaskList" runat="server" DataSourceID="TaskSource" DataKeyNames="id" 
    AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField AccessibleHeaderText="Name" HeaderText="Name" >
            <EditItemTemplate>
                <asp:DropDownList ID="ddlMemberName" runat="server" DataSourceID="MemberSource" 
                    DataTextField="fullname" DataValueField="id" SelectedValue='<%# Bind("member_id") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblMemberName" runat="server" Text='<%# Bind("Member.fullname") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField AccessibleHeaderText="Task" HeaderText="Task">
            <EditItemTemplate>
                <asp:TextBox ID="txtMemberTask" runat="server" Text='<%# Bind("description") %>' 
                    TextMode="MultiLine"></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblMemberTask" runat="server" Text='<%# Bind("description") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />    
    </Columns>
</asp:GridView>

Мои EntityDataSources настроены так:

<asp:EntityDataSource ID="TaskSource"
    DefaultContainerName="webteamEntities" runat="server"
    ConnectionString="name=webteamEntities" EnableDelete="True"
    EnableFlattening="False" EnableInsert="True" EnableUpdate="True" 
    EntitySetName="Tasks" Include="Project, Member" />
<asp:EntityDataSource ID="MemberSource"
    DefaultContainerName="webteamEntities" runat="server"
    ConnectionString="name=webteamEntities"
    EnableFlattening = "False"
    EntitySetName="Members" />

Так что, если мои datakeynames = "id", почему он даже пытается получить доступ к Member.fullname при удалении? И даже при этом ... почему мое редактирование работает нормально?

Я что-то упустил?

1 Ответ

1 голос
/ 03 июля 2010

Это не повредит замене Bind на Eval в ваших шаблонах предметов. Привязка - это 2 способа. Эвал это 1 способ. Поскольку вы показываете данные только в шаблонах элементов, Eval будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...