2016-06-24 11 views
0

私は、.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メソッドを使用します。

答えて

0

試して、jqueryのことで

$("#ddlstate").change(function() { 
    $('[id*=Hiddenfield1]').attr('value', $("#ddlstate").val()); 
}); 

<asp:HiddenField ID="Hiddenfield1" runat="server"> 

コード

xp.Parameters.AddWithValue("@STATE_ID", Hiddenfield1.vlue); 
0

Ajaxを使用してドロップダウンリストを作成しているため、PostBackを実行したときにViewStateが無効であるということが、私が一番近似していることです。 Ajaxコールを使用してドロップダウンリストにデータを入力してから、そのデータをサーバーに送信するために全面的なポストを使用しようとしているようです。あなたはここでいくつかのことを行っていますが、これは。

私は、リクエスト側でリクエスト/ポストを行う必要があると思います。つまり、ドロップダウンリストとテキストボックスコントロールをリクエスト側でバインドしてから、通常のポストバックを使用してデータをサーバーに返します。または、両方の方法でAJAXを使用する - 受信してデータを送信しますが、そのまま使用することはできません。

関連する問題