FormView вставка новой строки C # и ASP.NET - PullRequest
4 голосов
/ 05 октября 2011

Я пытаюсь использовать FormView для подключения к моей БД SQL, я следую инструкциям, но в руководстве говорится, что если я нахожусь в ItemTemplate, то должна быть гиперссылка на кнопку «Создать»в InsertItemTemplate проблема, с которой я сталкиваюсь, заключается в том, что кнопка не существует.Как перейти в режим вставки, чтобы добавить новую запись в базу данных SQL?И каков синтаксис для фактического добавления элементов в базу данных?Спасибо за любую помощь

<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
            AutoGenerateColumns="False" AutoGenerateDeleteButton="True" 
            AutoGenerateEditButton="True" CellPadding="4" DataSourceID="SqlDataSource1" 
            EmptyDataText="There are no data records to display." ForeColor="#333333" 
            Height="250px" Width="957px">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" 
                    SortExpression="ID" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="Description" HeaderText="Description" 
                    SortExpression="Description" />
                <asp:BoundField ApplyFormatInEditMode="True" DataField="Date_Added" 
                    DataFormatString="{0:MMM d, yyyy}" HeaderText="Date_Added" HtmlEncode="False" 
                    SortExpression="Date_Added" />
            </Columns>
            <EditRowStyle BackColor="#2461BF" />
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#EFF3FB" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#F5F7FB" />
            <SortedAscendingHeaderStyle BackColor="#6D95E1" />
            <SortedDescendingCellStyle BackColor="#E9EBEF" />
            <SortedDescendingHeaderStyle BackColor="#4870BE" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" 
            ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>" 
            SelectCommand="SELECT [ID], [Title], [Description], [Date Added] AS Date_Added FROM [knowledgebase]">
        </asp:SqlDataSource>

        <br />

    </div>
    <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1">
        <EditItemTemplate>
            ID:
            <asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID") %>' />
            <br />
            Title:
            <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' />
            <br />
            Description:
            <asp:TextBox ID="DescriptionTextBox" runat="server" 
                Text='<%# Bind("Description") %>' />
            <br />
            Date_Added:
            <asp:TextBox ID="Date_AddedTextBox" runat="server" 
                Text='<%# Bind("Date_Added") %>' />
            <br />
            <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
                CommandName="Update" Text="Update" />
            &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Cancel" />
        </EditItemTemplate>
        <InsertItemTemplate>
            Title:
            <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' />
            <br />
            Description:
            <asp:TextBox ID="DescriptionTextBox" runat="server" 
                Text='<%# Bind("Description") %>' />
            <br />
            Date_Added:
            <asp:TextBox ID="Date_AddedTextBox" runat="server" 
                Text='<%# Bind("Date_Added") %>' />
            <br />
            <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
                CommandName="Insert" Text="Insert" />
            &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Cancel" />
        </InsertItemTemplate>
        <ItemTemplate>
            ID:
            <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
            <br />
            Title:
            <asp:Label ID="TitleLabel" runat="server" Text='<%# Bind("Title") %>' />
            <br />
            Description:
            <asp:Label ID="DescriptionLabel" runat="server" 
                Text='<%# Bind("Description") %>' />
            <br />
            Date_Added:
            <asp:Label ID="Date_AddedLabel" runat="server" 
                Text='<%# Bind("Date_Added") %>' />
            <br />

        </ItemTemplate>
    </asp:FormView>
    </form>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 30 октября 2011

Чтобы войти в режим вставки, вы должны либо включить элемент управления в свой другой шаблон с именем команды "New", или предоставить некоторые другие входные данные, которые могут привести ваш код к программно перейти (yourFormView).ChangeMode(FormViewMode.Insert). Затем в шаблоне элемента вставки вам нужна кнопка с командой «Вставить» или элемент управления, который может программно перейти на (yourDataSource).Insert(). Наконец, вашему источнику данных необходим InsertCommand, значением которого является SQL, который нужно выполнить, и некоторая спецификация параметров, предоставленных ему, что можно сделать с помощью подтега <InsertParameters> или программно в обработчике событий DataSource_Inserting.

Первый шаг переводит вас в режим вставки формы, второй - содержимое формы, отправляемое обратно в источник данных, а третий - источник данных для записи его в базу данных.

0 голосов
/ 05 октября 2011

Вам нужна кнопка в вашем ItemTemplate, чтобы войти в режим вставки, а также InsertCommand в вашем SqlDataSource:

  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
          ConnectionString="<%$ ConnectionStrings:BlaConnectionString %>"
            InsertCommand="INSERT INTO [Customer] ([Name]) VALUES (@Name)"
            SelectCommand="SELECT [id], [Name] FROM [Customer]"
            OnInserted="SqlDataSource1_Inserted">
            <InsertParameters>
                <asp:Parameter Name="Name" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...