Windowsフォームアプリケーションに4つのテキストボックスと、グリッドビューと「追加」というボタンがあります。私が望むのは、[追加]ボタンをクリックすると、4つのテキストボックスに入力されたデータが同じ行のdatagridviewの4つの異なる列に移動することです。テキスト ボックスをクリアし、再度入力して [追加] ボタンをもう一度クリックすると、データはグリッドビューの 2 行目に表示されます。
4 に答える
このコードを使用します:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Dataset;Integrated Security=True");
SqlDataAdapter ds1 = new SqlDataAdapter();
BindingSource bd = new BindingSource();
public Form1()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, EventArgs e)
{
ds1.InsertCommand = new SqlCommand("INSERT INTO Employee VALUES(@FirstName,@LastName)", con);
ds1.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
ds1.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;
con.Open();
ds1.InsertCommand.ExecuteNonQuery();
con.Close();
}
private void btndisplay_Click(object sender, EventArgs e)
{
ds1.SelectCommand = new SqlCommand("Select * from Employee", con);
ds.Clear();
ds1.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
bd.DataSource = ds.Tables[0];
//txtFirstName.DataBindings.Add("Text", bd, "FirstName");
//txtLastName.DataBindings.Add("Text", bd, "LastName");
}
private void btnPervious_Click(object sender, EventArgs e)
{
bd.MovePrevious();
update();
records();
}
private void btnNext_Click(object sender, EventArgs e)
{
bd.MoveNext();
update();
records();
}
private void btnFirst_Click(object sender, EventArgs e)
{
bd.MoveFirst();
update();
records();
}
private void btnLast_Click(object sender, EventArgs e)
{
bd.MoveLast();
update();
records();
}
private void update()
{
dataGridView1.ClearSelection();
dataGridView1.Rows[bd.Position].Selected = true;
records();
}
private void records()
{
label1.Text = "records" + bd.Position + " of " + (bd.Count - 1);
}
この回答をマークアップすることを忘れないでください
手順:
1) DataGrid ビューをバインドしたら、DataSource を Viewstate 変数に保存します。
2) Add Button の Click イベントを定義する Click イベントでは、データソースを持つ Viewstate 変数を呼び出して、DataTable としてキャストします。そのデータテーブルの新しい行を作成し、新しい行のセルに値を割り当てます。この新しい行を Datatable に追加し、dataTable を ViewSate に再度保存し、データソースを DataGrid にバインドします。
以上です〜
まず SHAKIR SHABBIR 氏に感謝しますが、Windows フォーム アプリケーションにはビューステートがないと思うので...
静的コレクション型を使用することをお勧めします...
入力フォームのクラスを定義し、foreach テキストボックスに変数を定義できます。追加ボタンをクリックすると、クラスのオブジェクトが作成され、すべての値がテキストボックスに設定され、行がグリッドに挿入され、すべての行データが保存されます (クラスごとのオブジェクトリスト内の gridview 行)
静的データテーブルを使用することもできます...テキストフィールドごとに列を作成する必要があります..データテーブルに行を追加します..グリッドのデータソースを選択します...
さらに助けが必要な場合は、いつでもお手伝いします..