私は、.netまたはsqlのどちらかであまりよくありません。テキストボックスとドロップダウンリストからデータベースに値を挿入する方法
私はウェブフォームとデータベースを持っています。このフォームでは、ユーザーがテキストボックスとドロップダウンリストに情報を入力できます。 ドロップダウンリストのデータがテーブルに保存されます。
したがって、ユーザーがフォームに入力してドロップダウンリストから希望のオプションを選択すると、テキストボックス内のデータと選択されたドロップダウンリストをデータベースに保存する必要があります。
私は正常にデータベースから値を読み、次のコードのようにドロップダウンリストに表示しています
public class state
{
public string stateID { get; set; }
public string stateName { get; set; }
}
[WebMethod]
public static List<state> PopulateDropDownList()
{
DataTable dt = new DataTable();
List<state> objDept = new List<state>();
SqlConnection con = new SqlConnection("Data Source = ****; Initial Catalog = LCF2016; Integrated Security = true");
{
using (SqlCommand cmd = new SqlCommand("SELECT STATE_ID, STATE_Name FROM state", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
objDept.Add(new state
{
stateID = dt.Rows[i]["STATE_ID"].ToString(),
stateName = dt.Rows[i]["STATE_Name"].ToString()
});
}
}
return objDept;
}
}
}
<script src="
http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
//url is the path of our web method (Page name/functionname)
url: "Default.aspx/PopulateDropDownList",
data: "{}",
dataType: "json",
//called on jquery ajax call success
success: function (result) {
$('#ddlstate').empty();
$('#ddlstate').append("<option value='0'>-Select-</option>");
$.each(result.d, function (key, value) {
$("#ddlstate").append($("<option></option>").val(value.stateID).html(value.stateName));
});
},
//called on jquery ajax call failure
error: function ajaxError(result) {
alert(result.status + ' : ' + result.statusText);
}
});
});
</script>
<p>State</p>
<asp:DropDownList ID="ddlstate" runat="server" Width="160px" />
をしかし、私は成功したようにデータを呼び出していても、ドロップダウンリストに表示されるので、選択したデータをテキストボックスのデータと共にデータベースに挿入することができません。つまり、データはデータベースに保存されません。 "提出]をクリックすると、" ここで
は、データを挿入するための私のコードです:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == true)
{
Label1.Text = ("**Thanks for entering your information");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
using (SqlConnection vid = new SqlConnection("Data Source = ****; Initial Catalog = LCF2016; Integrated Security = true"))
{
vid.Open();
using (SqlCommand xp = new SqlCommand("insert into LCF2016 (Fname, Lname, Email, Birthdate, Phone, Address, City, STATE_ID, Zip, Country_ID, Days_Per_Month, Primary_Language, Secondary_Language, Occupation_ID, HearAbout_ID, Other_Skills) Values(@Fname, @Lname, @Email, @Birthdate, @Phone, @Address, @City, @STATE_ID, @Zip, @Country_ID, @Days_Per_Month, @Primary_Language, @Secondary_Language, @Occupation_ID, @HearAbout_ID @Other_Skills)", vid))
{
xp.Parameters.AddWithValue("@Fname", TextBox1.Text);
xp.Parameters.AddWithValue("@Lname", TextBox2.Text);
xp.Parameters.AddWithValue("@Email", TextBox3.Text);
xp.Parameters.AddWithValue("@Birthdate", TextBox4.Text);
xp.Parameters.AddWithValue("@Phone", TextBox5.Text);
xp.Parameters.AddWithValue("@Address", TextBox6.Text);
xp.Parameters.AddWithValue("@City", TextBox7.Text);
xp.Parameters.AddWithValue("@STATE_ID", ddlstate.SelectedValue);
xp.Parameters.AddWithValue("@Zip", TextBox8.Text);
xp.Parameters.AddWithValue("@country_ID", ddlcountry.SelectedValue);
xp.Parameters.AddWithValue("@Days_Per_Month", TextBox10.Text);
xp.Parameters.AddWithValue("@Primary_Language", ddllangp.SelectedValue);
xp.Parameters.AddWithValue("@Secondary_Language", ddllangs.SelectedValue);
xp.Parameters.AddWithValue("@Occupation_ID", ddloccup.SelectedValue);
xp.Parameters.AddWithValue("@HearAbout_ID", ddlhearabout.SelectedValue);
xp.Parameters.AddWithValue("@Other_Skills", TextBox15.Text);
xp.ExecuteNonQuery();
}
}
私が手にエラーが
無効なポストバックまたはコールバック引数です。イベントの検証は、in構成または<%@ Page EnableEventValidation = "true"%>を使用して有効になっています。セキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生することを確認します。データが有効で予期されている場合は、検証のためにポストバックまたはコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用します。