ASP.NET 插入问题

发布于 2024-11-04 15:18:03 字数 3227 浏览 1 评论 0原文

在学习了几年 PHP 经验后,我正尝试开始学习 ASP.NET,但在掌握基础知识方面遇到了困难。

我只是想使用 ASP.NET 和 MS SQL Server Compact 4.0 数据库插入一行。 C#。但是,我的页面只插入一个空白行。编辑& GridView 的删除功能正常工作。我做错了什么?

Default.aspx

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="testSite._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>People</h2>
 <p>
    <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
        AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                ShowSelectButton="True" />
            <asp:BoundField DataField="first" HeaderText="first" SortExpression="first" />
            <asp:BoundField DataField="last" HeaderText="last" SortExpression="last" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:sqltestConnectionString %>" 
        DeleteCommand="DELETE FROM [People] WHERE [ID] = @ID" 
        InsertCommand="INSERT INTO [People] ([first], [last]) VALUES (@first, @last)" 
        SelectCommand="SELECT * FROM [People]" 
        UpdateCommand="UPDATE [People] SET [first] = @first, [last] = @last WHERE [ID] = @ID" >
        <DeleteParameters>
            <asp:Parameter Name="ID" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:FormParameter Name="first" FormField="txtFirst" />
            <asp:FormParameter Name="last" FormField="txtLast" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="first" Type="String" />
            <asp:Parameter Name="last" Type="String" />
            <asp:Parameter Name="ID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
</p>
<p>
    <asp:Label ID="Label1" runat="server" Text="First"></asp:Label>
    <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>
    <br />
    <asp:Label ID="Label2" runat="server" Text="Last"></asp:Label>
    <asp:TextBox ID="txtLast" runat="server"></asp:TextBox>
    <br />
    <asp:Button ID="btnAdd" runat="server" onclick="btnAdd_Click" Text="Add" />
</p>
</asp:Content>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace testSite
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            SqlDataSource1.Insert();
        }
    }
}

I am trying to start learning ASP.NET after a few years of PHP experience and I am having trouble getting the basics down.

I am just trying to insert a row into a MS SQL Server Compact 4.0 database with ASP.NET & C#. However, my page only inserts a blank row. The edit & delete functions of GridView work correctly. What am I doing wrong?

Default.aspx

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="testSite._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>People</h2>
 <p>
    <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
        AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                ShowSelectButton="True" />
            <asp:BoundField DataField="first" HeaderText="first" SortExpression="first" />
            <asp:BoundField DataField="last" HeaderText="last" SortExpression="last" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:sqltestConnectionString %>" 
        DeleteCommand="DELETE FROM [People] WHERE [ID] = @ID" 
        InsertCommand="INSERT INTO [People] ([first], [last]) VALUES (@first, @last)" 
        SelectCommand="SELECT * FROM [People]" 
        UpdateCommand="UPDATE [People] SET [first] = @first, [last] = @last WHERE [ID] = @ID" >
        <DeleteParameters>
            <asp:Parameter Name="ID" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:FormParameter Name="first" FormField="txtFirst" />
            <asp:FormParameter Name="last" FormField="txtLast" />
        </InsertParameters>
        <UpdateParameters>
            <asp:Parameter Name="first" Type="String" />
            <asp:Parameter Name="last" Type="String" />
            <asp:Parameter Name="ID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
</p>
<p>
    <asp:Label ID="Label1" runat="server" Text="First"></asp:Label>
    <asp:TextBox ID="txtFirst" runat="server"></asp:TextBox>
    <br />
    <asp:Label ID="Label2" runat="server" Text="Last"></asp:Label>
    <asp:TextBox ID="txtLast" runat="server"></asp:TextBox>
    <br />
    <asp:Button ID="btnAdd" runat="server" onclick="btnAdd_Click" Text="Add" />
</p>
</asp:Content>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace testSite
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            SqlDataSource1.Insert();
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迟到的我 2024-11-11 15:18:03

试试这个

    private List<SqlParameter> insertParameters = new List<SqlParameter>();

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlParameter fName = new SqlParameter("@First", SqlDbType.VarChar, 30);
        fName.Direction = ParameterDirection.Input;

        fName.Value = txtFirst.Text;
        SqlParameter lName = new SqlParameter("@Last", SqlDbType.VarChar, 30);
        lName.Direction = ParameterDirection.Input;

        lName.Value = txtLast.Text;

        insertParameters.Add(fName);
        insertParameters.Add(lName);
        SqlDataSource1.Insert();
    }

    protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
    {

        e.Command.Parameters.Clear();

        foreach (SqlParameter p in insertParameters)

            e.Command.Parameters.Add(p);
    }
}

try this

    private List<SqlParameter> insertParameters = new List<SqlParameter>();

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlParameter fName = new SqlParameter("@First", SqlDbType.VarChar, 30);
        fName.Direction = ParameterDirection.Input;

        fName.Value = txtFirst.Text;
        SqlParameter lName = new SqlParameter("@Last", SqlDbType.VarChar, 30);
        lName.Direction = ParameterDirection.Input;

        lName.Value = txtLast.Text;

        insertParameters.Add(fName);
        insertParameters.Add(lName);
        SqlDataSource1.Insert();
    }

    protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
    {

        e.Command.Parameters.Clear();

        foreach (SqlParameter p in insertParameters)

            e.Command.Parameters.Add(p);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文