0

私はこのASPXコードを持っています:

<form name="AddArticle" action="Register.aspx" method="post">
<b>
title :<br /></b><input id="Text1" type="text" name="ArticleTitle"/><p></p>
<b>

date: <br /></b><input id="Text2" type="text" name="ArticleDate"/><p></p>

<b>
author : <br /></b><input id="Text3" type="text" name="ArticleAuthor"/><p></p>
<b>
text: <br /></b> <textarea rows="10" cols="60"  name="ArticleBody"></textarea>
<br />
<input id="Reset1" type="reset" value="clean" />
<input id="Submit1" type="submit" value="send" /></form>

そして、私はこの ASPX.C# コードを持っています:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;

public partial class Register : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        string ArticleTitle = "", ArticleBody = "", ArticleAuthor = "", ArticleDate = "";
        if (IsPostBack)
        {
            try
            {
                ArticleTitle = Request.Form["ArticleTitle"].ToString();
                ArticleDate = Request.Form["ArticleDate"].ToString();
                ArticleAuthor = Request.Form["ArticleAuthor"].ToString();
                ArticleBody = Request.Form["ArticleBody"].ToString();


                string dpath = Server.MapPath(@"App_Data") + "/MySite.mdb";
                string connectionstring = @"Data source='" + dpath + "';Provider='Microsoft.Jet.OLEDB.4.0';";
                OleDbConnection con = new OleDbConnection(connectionstring);
                string QuaryString = string.Format("insert into tblArticles(ArticleTitle,ArticleBody, ArticleAuthor, PostDate) values ('{0}','{1}','{2}','{3}')", ArticleTitle, ArticleBody, ArticleAuthor, ArticleDate);
                OleDbCommand cmd = new OleDbCommand(QuaryString, con);
                con.Open();
                cmd.ExecuteNonQuery();

            }
            catch
            {
                Response.Redirect("Default.aspx");
            }
        }
    }
    }

私の質問は、「送信」ボタンをクリックすると、フォームからの情報 (タイトル、作成者...) が DB に挿入されないのはなぜですか? どうすれば修正できますか?助けてください、ありがとう。

4

2 に答える 2

1

ボタンクリックイベントを使用する最良の方法ですが、あなたの場合です。各要素に AutoPostBack 属性を使用できます。

<asp:TextBox ID="ArticalTitle" runat="server" Text="Button"  AutoPostBack="true"/>

ユーザーがこの要素のフォーカスを変更すると (TAB キーを押すなど)、コードはテキスト ボックスの値をポストバックします。ただし、この場合、値は 1 つずつ渡されるため、これらの値を DB に書き込む前に保存する必要があります。または、パネル コントロールを使用してパネル コントロールの外にダミー ボタンを配置して、フォーカスを変更することもできます。

<asp:Panel ID="Panel1" runat="server" AutoPostBack="true">
    <asp:TextBox ID="TextBox1" Text="asd" runat="server" />
    <asp:TextBox ID="TextBox2" Text="asd" runat="server" />
</asp:Panel>
<asp:Button ID="Button1" runat="server" Text="Button" />

ユーザーがボタン パネル コントロールの自動ポストバックをクリックすると、テキスト ボックスに値をキャプチャできます。

お役に立てれば。

于 2013-01-05T10:51:18.633 に答える
1

関数を呼び出すには、ボタンクリックイベントを作成する必要があると思います。

.cs

  protected void Button1_Click(object sender, EventArgs e)
    {
        ArticleTitle = Request.Form["ArticleTitle"].ToString();
            ArticleDate = Request.Form["ArticleDate"].ToString();
            ArticleAuthor = Request.Form["ArticleAuthor"].ToString();
            ArticleBody = Request.Form["ArticleBody"].ToString();


            string dpath = Server.MapPath(@"App_Data") + "/MySite.mdb";
            string connectionstring = @"Data source='" + dpath + "';Provider='Microsoft.Jet.OLEDB.4.0';";
            OleDbConnection con = new OleDbConnection(connectionstring);
            string QuaryString = string.Format("insert into tblArticles(ArticleTitle, PostDate) values ('{0}','{1}','{2}','{3}')", ArticleTitle, ArticleBody, ArticleAuthor, ArticleDate);
            OleDbCommand cmd = new OleDbCommand(QuaryString, con);
            con.Open();
            cmd.ExecuteNonQuery();
    }

.aspx:

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

StoredProcedure を使用: web.config で connectString:</p>

<add name="CGB_GlobalInfoConnectionString" connectionString="Data Source=127.0.0.1;Initial Catalog=TestDB;Persist Security Info=True;User ID=sa;Password=11111" providerName="System.Data.SqlClient" />

.cs:

SqlConnection connection = new SqlConnection(DataManager.DBConnectString);
            try
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = connection;
                cmd.CommandText = "Insert_AddSomething";
                cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = userid;

                connection.Open();
                cmd.ExecuteNonQuery();

                }
于 2013-01-05T10:05:57.577 に答える