2009-03-10 10 views
1

私のアプリケーションでは、グリッドビューコントロールを使用しています。空の行が正常に追加されましたが、私の問題は、私はこの空の行に値を入力して保存したいです新しいDB行を追加してGridViewコントロールを使用して編集するにはどうすればよいですか?

string co = ConfigurationSettings.AppSettings["MyLogin"]; 
      SqlConnection connection = new SqlConnection(co); 
      connection.Open();     
string sql = "insert into TeamMember_table " 
      + "values('','','','','','','','','','','','')";     
SqlDataAdapter dp = new SqlDataAdapter(sql, connection);     
DataSet ds = new DataSet();     
dp.Fill(ds);     
gridview1.DataBind();    
connection.Close(); 

:私は次のコードを使用して、私のグリッドビューコントロールで新しい空行を作成してい

保存ボタンをクリックすると、この値が表に表示されます。

これを行うにはどのような方法が最適ですか?

答えて

1

SqlDataAdapterの最初の引数は、使用するSELECTステートメントです。あなたのコードは、データが照会されるたびに新しいデータベース行を追加しています(非常に間違っていると思います)。INSERTSELECTの混乱のためにクエリ自体が実際にはうまくいかないことが予想されます。

あなたは本当にただSELECTTeamMember_tableからのやるべきこと、そしておそらくローカルデータ・テーブル、その後の行を追加:個人的に

string sql = "SELECT * FROM TeamMember_table"; 
SqlDataAdapter dp = new SqlDataAdapter(sql, connection);     
DataSet ds = new DataSet(); 
dp.Fill(ds); 
DataTable table = ds.Tables[0]; 
table.Rows.Add("", "", ..., "") 

、私はは追加しないでしょう拘束力が絶対に必要不可欠でない限り、偽の行。私はそれについて助言することはできません、私は恐れています...しかし、間違って空行を追加しないように注意する必要があります。おそらく、ポストバック(ASP.NETを前提としています)をチェックし、有用なものがあれば保存してください。

+0

私は.NETの初心者ウルのコードが、私はまた、新しく作成された行にあるデータを保存するように求めています空のrow.butを作成することです午前plsは結合 – thiru

+0

ASP.NETを助けるが、私ではありません専門、私は恐れている。私は慎重なINSERT呼び出しを使用してデータを追加します(ORMを介してSP、ov経由で)が、これは説明するのに時間がかかるでしょう... –

0

これらの動作を組み込むには、RowDataBoudnやRowDataDeleteなどのイベントを使用することをお勧めします。たとえば:

protected void Page_Load(object sender, EventArgs e) { 
    GridView1.RowDataBound += GridView1_RowDataBound; 
    GridView1.RowUpdated += GridView1_RowUpdated; 
    if (!IsPostBack) { 
     string co = ConfigurationManager.ConnectionStrings["MyConnectionString"]; 
     using (SqlConnection connection = new SqlConnection(co)) { 
      connection.Open(); 
      string sql = "select ...."; 
      SqlDataAdapter dp = new SqlDataAdapter(sql, connection); 
      DataSet ds = new DataSet(); 
      dp.Fill(ds); 

      GridView1.DataSource = ds.Tables["MyTable"]; 
      GridView1.DataKeyNames = new string[] { "Id" }; 
      GridView1.DataBind(); 
     }     
    } 
} 

void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e) { 
    throw new NotImplementedException(); 
} 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { 
    if (e.Row.RowType == DataControlRowType.DataRow) { 
     Label l = (Label)e.Row.FindControl("Label1"); 
     l.Text = "some text value"; 
    } 
}