2016-07-14 12 views
0

グリッドビューからデータをデータベースに挿入することはできません。私はそれを実行し、それは円滑に実行されますが、私のデータベースにはデータ入力がありません。私のエラーはどこですか?グリッドビューにはトランザクションごとに1つ以上のアイテムがある可能性があるため、私はforループを使用しました。ありがとう!グリッドビューからデータベースに値を挿入できません

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     string transIDs = transID.Text; 
     string datefiled = lblDateFiled.Text; 
     string requisitioner = txtName.Text; 
     string company = txtComp.Text; 
     string branch = txtBranch.Text; 
     string bu = txtBU.Text; 
     string dept = txtDept.Text; 
     string sec = txtSec.Text; 
     string reason = txtReason.Text; 



     int accept = 0; 

     if(rblAccept.SelectedIndex == 0) 
     { 
      accept = 1; 
     } 
     else 
     { 
      accept = 0; 
     } 

     //foreach (GridViewRow row in gvModal.Rows) 
     //{ 

     for(int i = 0; i < gvModal.Rows.Count; i++) 
     { 

      string dateA = DateTime.Now.ToString("yyyy-MM-dd"); 

      Utility u = new Utility(); 
      string conn = u.connect(); 

      Label type = (Label)gvModal.Rows[i].Cells[1].FindControl("lbltype"); 
      Label model = (Label)gvModal.Rows[i].Cells[2].FindControl("lblModel"); 
      Label quantity = (Label)gvModal.Rows[i].Cells[3].FindControl("lblQuan"); 
      Label unit = (Label)gvModal.Rows[i].Cells[4].FindControl("lblUnit"); 

      //string type = row.Cells[1].Text; 
      //string model = row.Cells[2].Text; 
      //string quantity = row.Cells[3].Text; 
      //string unit = row.Cells[4].Text; 

      SqlConnection connUser = new SqlConnection(conn); 
      SqlCommand read = connUser.CreateCommand(); 

      string query = "INSERT INTO Mosef_Alert values (@Mosef_No, @Branch, @BU, @Dept, @Section, @Requisitioner, @Accepted, @Date_Accepted, @Reason, @MOSEF_Date, @type, @model, @quantity, @unit)"; 

       connUser.Open(); 
       read.CommandText = query; 

       read.Parameters.Add(new SqlParameter("Mosef_No", transIDs)); 
       read.Parameters.Add(new SqlParameter("Branch", branch)); 
       read.Parameters.Add(new SqlParameter("BU", bu)); 
       read.Parameters.Add(new SqlParameter("Dept", dept)); 
       read.Parameters.Add(new SqlParameter("Section", sec)); 
       read.Parameters.Add(new SqlParameter("Requisitioner", requisitioner)); 
       read.Parameters.Add(new SqlParameter("Accepted", accept)); 
       read.Parameters.Add(new SqlParameter("Date_Accepted", dateA)); 
       read.Parameters.Add(new SqlParameter("Reason", reason)); 
       read.Parameters.Add(new SqlParameter("MOSEF_Date", lblDateFiled.Text)); 
       read.Parameters.Add(new SqlParameter("type", type)); 
       read.Parameters.Add(new SqlParameter("model", model)); 
       read.Parameters.Add(new SqlParameter("quantity", quantity)); 
       read.Parameters.Add(new SqlParameter("unit", unit)); 

       //read.ExecuteNonQuery(); 

       read.Parameters.Clear(); 

     } 
     System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
     sb.Append(@"<script type ='text/javascript'>"); 
     sb.Append("alert('Records Updated');"); 
     sb.Append("$('editModal').modal('hide');"); 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "EditHideModalScript", sb.ToString(), false); 
    } 
+0

こんにちは@ジェダイ、間違いを犯しますか? – Sami

+0

@Sami、ええ、私のエラーは「追加情報:オブジェクト型System.Web.UI.WebControls.Labelから既知のマネージプロバイダ固有の型へのマッピングが存在しません」と表示されます。 –

+0

ちょうど気づいた、あなたLabel.Textのような値ではないコントロール(ラベル)を渡しています。私は私の更新答えを見てください。 – Sami

答えて

1

あなたはあなたがコントロール(ラベル)を通過代わりの制御値(Label.Text)、タイプミスかもしれいる

  read.Parameters.Add(new SqlParameter("@Mosef_No", transIDs)); 
      read.Parameters.Add(new SqlParameter("@Branch", branch)); 
      read.Parameters.Add(new SqlParameter("@BU", bu)); 
      read.Parameters.Add(new SqlParameter("@Dept", dept)); 
      read.Parameters.Add(new SqlParameter("@Section", sec)); 
      read.Parameters.Add(new SqlParameter("@Requisitioner", requisitioner)); 
      read.Parameters.Add(new SqlParameter("@Accepted", accept)); 
      read.Parameters.Add(new SqlParameter("@Date_Accepted", dateA)); 
      read.Parameters.Add(new SqlParameter("@Reason", reason)); 
      read.Parameters.Add(new SqlParameter("@MOSEF_Date", lblDateFiled.Text)); 
      read.Parameters.Add(new SqlParameter("@type", type)); 
      read.Parameters.Add(new SqlParameter("@model", model)); 
      read.Parameters.Add(new SqlParameter("@quantity", quantity)); 
      read.Parameters.Add(new SqlParameter("@unit", unit)); 

のようなパラメータ名と@を配置する必要があります。以下のように更新してください:

read.Parameters.Add(new SqlParameter("@type", type.Text)); 
    read.Parameters.Add(new SqlParameter("@model", model.Text)); 
    read.Parameters.Add(new SqlParameter("@quantity", quantity.Text)); 
    read.Parameters.Add(new SqlParameter("@unit", unit.Text)); 
0

You Miss @ Commandを表しています。このように使用する:あなたは、整数パラメータ値を指定するには、SqlParameterコンストラクタ のこのオーバーロードを使用するときは注意してください:

read.Parameters.Add(new SqlParameter("@Mosef_No", transIDs)); 
read.Parameters.Add(new SqlParameter("@Branch", branch)); 
read.Parameters.Add(new SqlParameter("@BU", bu)); 

MSDNは、と言っています。このオーバーロードにはObject型の 値が必要なので、次のC#の例で示すように、値がゼロの場合は整数値をオブジェクト 型に変換する必要があります。

次のように同じを使用することができます。

SqlDbType
read.Parameters.Add("@Mosef_No",SqlDbType.Int).Value= transIDs; 
read.Parameters.Add("@Branch",SqlDbType.VarChar).Value= branch; 
read.Parameters.Add("@BU",SqlDbType.Char).Value= bu; 

を使用すると、データの型を指定するのに役立ち列挙です。

関連する問題