2016-10-25 21 views
2

Please find imageSQL Server 2008の特定の列に列の値を格納する方法は?

基本的には、フィールドをマッピングしています。 GridView 2にあるように、特定の列名を選択しました。

1 | id | Column0の場合はidを選択しましたColumn0を選択しましたので、データベースでは列の値1,2,3,4をidカラムに保存します。
id
1
2
3
以下のようにだから私の質問は、私は、私が列名を渡している特定の列の列の値、列の値を動的保管はどうすればよいのですか?

ここに私が行ったコードがあります。私は間違っていることを知っています。

protected void Button2_Click(object sender, EventArgs e) 
{ 
    DataTable dtMap = new DataTable(); 
    dtMap.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)), new DataColumn("Source", typeof(string)), new DataColumn("Destination", typeof(string)) }); 

    foreach (GridViewRow gr in GridView2.Rows) 
    { 
     int id = Convert.ToInt32(GridView2.Rows[gr.RowIndex].Cells[0].Text); 
     string source = GridView2.Rows[gr.RowIndex].Cells[1].Text; 
     string destination = ((DropDownList)gr.FindControl("DropDownList1")).SelectedItem.Value; 


     DataTable dt = new DataTable(); 
     dt = (DataTable)Session["data"]; 
     DataColumn selectedColumn = dt.Columns[destination]; 
     List<object> allValues = dt.AsEnumerable().Select(r => r[selectedColumn]).ToList(); 

     connection(); 
     strsql = "Insert into F3_BC_Product_Mapping_Data (@source) values (@value) "; 
     cmd = new SqlCommand(strsql, con); 
     cmd.Parameters.AddWithValue("@source", destination); 
     cmd.Parameters.AddWithValue("@value", allValues); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

     dtMap.Rows.Add(id, source, destination); 
    } 
+0

おそらく、これが役立ちます。http://www.aspsnippets.com/Articles/Insert-Update-Edit-Delete-record-in-GridView-using-SqlDataSource-in-ASPNet.aspx – Tanner

+0

は、私はあなたを読みます5回ポストし、まだ何も得ていない。なぜ値は動的ですか? – Badiparmagi

+0

さて、私は説明しようとします。最初のグリッドビューのバインド列名をドロップダウンリストの2番目のグリッドビューにしました。今私はkewordfilterの列1を選択した場合、私はキーワードフィルタと列1の値として値として列名と異なるテーブルの下に列1の値を格納したい。 –

答えて

1

私は何か試しました。これをチェックし、私に教えてください。

  foreach (GridViewRow gr in GridView1.Rows) 
      { 
       int id = Convert.ToInt32(GridView1.Rows[gr.RowIndex].Cells[0].Text); 
       string source = GridView1.Rows[gr.RowIndex].Cells[1].Text; 
       string destination = ((DropDownList)gr.FindControl("DropDownList1")).SelectedItem.Value; 


       InsertDynamicColumn(source, destination); 
      } 

ここは私のInsertDynamicColumn(string source, string destination)メソッドです。私はSessionから自分のDataTableを取得した後、宛先パラメータに基づいてDatatableをフィルタリングし、結果を新しいリストに入れました。残りは簡単です。リストからソースに値を挿入します。

private void InsertDynamicColumn(string source, string destination) 
    { 
     //dt from Session 
     DataTable dt = new DataTable(); 
     dt = (DataTable)Session["myData"]; 

     //list filtered by Column name 
     var list = from t in dt.AsEnumerable() 
         select new 
         { 
          colX = t.Field<string>(destination),// "ColX" 
         }; 

     //new filtered list. 
     var listOfColx = list.ToList(); 


     //loop through list and insert values to source from parameters 
     for (int i = 0; i < listOfColx.Count; i++) 
     { 
      connection(); 
      strsql = string.Format("Insert into F3_BC_Product_Mapping_Data ({0}) values (@value) ", source); 
      cmd = new SqlCommand(strsql, con); 
      cmd.Parameters.AddWithValue("@value", listOfColx[i]); 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 

     } 
    } 
+0

私はこれを試してみようとあなたに知らせる –

+0

はいそれは私のために働いた! –

+0

@ samkokaneはうれしいです。 – Badiparmagi

関連する問題