Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Трабл с FormView


Автор: Exception 25.3.2006, 19:13
Напрашивается мысль, что я не понял принципа его работы, так что, пожалуйста, объясните, почему этот код не работает smile
Вот код .aspx-файла:
Код

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MyPage.aspx.vb" Inherits="MyPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>My Page</title>
</head>
<body>
    <form id="MyForm" runat="server">
        <asp:FormView ID="MyFormView" runat="server">
            <ItemTemplate>
                <%#Eval("Name")%>
                <br />
                <asp:LinkButton ID="EditItem" CommandName="Edit" Text="Редактировать" runat="server" /><br />
                <asp:LinkButton ID="AddItem" CommandName="New" Text="Добавить" runat="server" /><br />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox runat="server" ID="name" Text='<%# Bind("Name") %>' />
                <asp:LinkButton ID="UpdateItem" Text="ОК" CommandName="Update" runat="server" />
                <asp:LinkButton ID="CancelUpdateItem" Text="Отмена" CommandName="Cancel" runat="server" />
            </EditItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
                <asp:LinkButton ID="InsertItem" Text="ОК" CommandName="Insert" runat="server" />
                <asp:LinkButton ID="CancelInsertItem" Text="Отмена" CommandName="Cancel" runat="server" />
            </InsertItemTemplate>
        </asp:FormView>
    </form>
</body>
</html>


Вот код codebehind-класса:

Код

Partial Class MyPage
    Inherits System.Web.UI.Page
    Private _ds As Data.DataSet


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        _ds = ... ' Неважно, откуда он
        MyFormView.DataSource = _ds
        MyFormView.DataBind()
    End Sub

#Region "Пустышки"
    Protected Sub MyFormView_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles MyFormView.ItemInserting
    '...
    End Sub

    Protected Sub MyFormView_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewUpdateEventArgs) Handles MyFormView.ItemUpdating
    '...
    End Sub

    Protected Sub MyFormView_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewModeEventArgs) Handles MyFormView.ModeChanging
    '...
    End Sub
#End Region

End Class

В чём ошибка? Дело в том, что всё нормально показывается, но линки Добавить/Изменить не работают -- FormView так и остаётся в режиме ReadOnly.
Буду очень признателен за помощь.

Автор: arilou 27.3.2006, 14:48
Цитата(Exception @ 25.3.2006, 19:13 Найти цитируемый пост)
MyFormView.DataBind()


99% что если сделаешь вот так, то все заработает (при условии, что в остальных местах все правильно):

Код

if(!IsPostBack)
  myFormView.DataBind();

Автор: Exception 28.3.2006, 13:38
Не, не работает smile

Автор: Exception 28.3.2006, 13:58
М-да...
Цитата(MSDN)

To bind to a data source that implements the System.Collections.IEnumerable interface, programmatically set the DataSource property of the FormView control to the data source and then call the DataBind method. When using this method, the FormView control does not provide built-in inserting, updating, deleting, and paging functionality. You need to provide this functionality by using the appropriate event.

Автор: Exception 28.3.2006, 15:54
Честно говоря, не понял, что именно надо сделать...

Автор: arilou 28.3.2006, 16:06
А нафига тебе формвью? Юзай ДатаГрид smile

Автор: Exception 28.3.2006, 16:38
Мне нужно только одну запись отображать...

Автор: Exception 28.3.2006, 19:14
Совершенно случайно обнаружил метод ChangeMode. Считаю вопрос решенным.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)