|
|
|
обновить datagridview
|
|||
|---|---|---|---|
|
#18+
помогите справиться со след проблемой: на форме необходимо несколько раз обновлять содержимое dataGridView1 private void frm_raspis_sem_Load(object sender, EventArgs e) { ... SqlCommand sqlcom = new SqlCommand("sSemestr", sqlcon); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter("sSemestr", sqlcon); sqlcom.CommandType = CommandType.StoredProcedure; try { sqlcon.Open(); if (sqlcon.State == ConnectionState.Open) { sqlcom.ExecuteNonQuery(); da.Fill(ds, "sSemestr"); dataGridView1.AutoGenerateColumns = true; //DataTable dt = ds.Tables[0]; dataGridView1.DataSource = ds; dataGridView1.DataMember = "sSemestr"; comboBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); dateTimePicker1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString(); dateTimePicker2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString(); } ... затем необходимо в этих самых comboBox1.Text dateTimePicker1.Text dateTimePicker2.Text обновить значения и чтоб затем обновились соответствующие строки в dataGridView1 , для этого использую private void button1_Click(object sender, EventArgs e) { ... SqlCommand sqlcom = new SqlCommand(); sqlcom.CommandText = "uSemestr"; sqlcom.Connection = sqlcon; sqlcom.CommandType = CommandType.StoredProcedure; sqlcom.Parameters.Add( "@date_begin", SqlDbType.SmallDateTime).Value = dateTimePicker1.Text; sqlcom.Parameters.Add( "@date_end", SqlDbType.SmallDateTime).Value = dateTimePicker2.Text; sqlcom.Parameters.Add( "@semestr", SqlDbType.NVarChar).Value = comboBox1.Text; DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter("uSemestr", sqlcon); //DataTable dt = ds.Tables["uSemestr"]; sqlcom.UpdatedRowSource = UpdateRowSource.OutputParameters; try { sqlcon.Open(); if (sqlcon.State == ConnectionState.Open) { sqlcom.ExecuteNonQuery(); //dataGridView1.DataMember = "tSemestr"; da.Fill(ds, "tSemestr"); //ds.AcceptChanges(); dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = ds; dataGridView1.DataMember = "tSemestr"; } ... но естественно ничего не получается, помогите маленьким советом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 10:33 |
|
||
|
обновить datagridview
|
|||
|---|---|---|---|
|
#18+
Так подойдет? Поле semestr - ключ в таблице sSemestr. private string cs = "Data Source=xxxxx;Initial Catalog=xxxxx;Integrated Security=True"; private DataSet ds; private void MainForm_Load(object sender, EventArgs e) { SqlConnection sqlcon = new SqlConnection(cs); ds = new DataSet(); string s = "select * from sSemestr"; SqlDataAdapter da = new SqlDataAdapter(s, sqlcon); try { sqlcon.Open(); if (sqlcon.State == ConnectionState.Open) { da.Fill(ds, "sSemestr"); dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = ds; dataGridView1.DataMember = "sSemestr"; foreach (DataRow rrv in ds.Tables["sSemestr"].Rows) { comboBox1.Items.Add(rrv["semestr"]); } comboBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); dateTimePicker1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString(); dateTimePicker2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString(); } } catch { MessageBox.Show("Something!!"); } } private void button2_Click(object sender, EventArgs e) { string sem = comboBox1.Text; string strfilter = "semestr = '" + sem + "'"; DataTable dt = ds.Tables["sSemestr"]; DataRow[] filterrows = dt.Select(strfilter); DataRow rowtoupdate = filterrows[0]; string sc = "select * from sSemestr where semestr = '" + sem + "'"; SqlDataAdapter sqlA = new SqlDataAdapter(sc, cs); SqlCommandBuilder sqlB = new SqlCommandBuilder(sqlA); try { rowtoupdate.BeginEdit(); rowtoupdate["date_begin"] = dateTimePicker1.Text; rowtoupdate["date_end"] = dateTimePicker2.Text; rowtoupdate.EndEdit(); sqlA.UpdateCommand = sqlB.GetUpdateCommand(); sqlA.Update(ds, "sSemestr"); ds.Tables["sSemestr"].AcceptChanges(); } catch(SqlException ex) { MessageBox.Show(ex.Message); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 17:56 |
|
||
|
обновить datagridview
|
|||
|---|---|---|---|
|
#18+
разрулил в общем книжным способом, хранимка на обновление не выводит набор данных а просто nonquery, затем создал: private void select() { SqlConnection sqlcon = new SqlConnection(str); //comboBox1.Items.Clear(); SqlCommand sqlcom = new SqlCommand("sSemestr", sqlcon); //DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter("sSemestr", sqlcon); sqlcom.CommandType = CommandType.StoredProcedure; try { sqlcon.Open(); if (sqlcon.State == ConnectionState.Open) { comboBox1.Items.Clear(); sqlcom.ExecuteNonQuery(); da.Fill(ds, "sSemestr"); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr = ds.Tables[0].Rows ; comboBox1.Items.Add(dr[0]); } dataGridView1.AutoGenerateColumns = true; //DataTable dt = ds.Tables[0]; dataGridView1.DataSource = ds; dataGridView1.DataMember = "sSemestr"; comboBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString(); dateTimePicker1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString(); dateTimePicker2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString(); } } catch (Exception) { if (sqlcon.State != ConnectionState.Open) { MessageBox.Show("подключения не существует"); } } finally { if (sqlcon.State == ConnectionState.Open) { sqlcon.Close(); } sqlcon.Dispose(); } и наконец обновление произвожу: private void button1_Click(object sender, EventArgs e) { ds.Clear(); SqlConnection sqlcon = new SqlConnection(str); //comboBox1.Items.Clear(); SqlCommand sqlcom = new SqlCommand(); sqlcom.CommandText = "uSemestr"; sqlcom.Connection = sqlcon; sqlcom.CommandType = CommandType.StoredProcedure; sqlcom.Parameters.Add( "@date_begin", SqlDbType.SmallDateTime).Value = dateTimePicker1.Text; sqlcom.Parameters.Add( "@date_end", SqlDbType.SmallDateTime).Value = dateTimePicker2.Text; sqlcom.Parameters.Add( "@semestr", SqlDbType.NVarChar).Value = comboBox1.Text; SqlDataAdapter da = new SqlDataAdapter("uSemestr", sqlcon); //DataTable dt = ds.Tables[0]; sqlcom.UpdatedRowSource = UpdateRowSource.None; try { sqlcon.Open(); if (sqlcon.State == ConnectionState.Open) { sqlcom.ExecuteNonQuery(); //dataGridView1.DataMember = "tSemestr"; da.Fill(ds, "uSemestr"); dataGridView1.DataSource = ds; dataGridView1.AutoGenerateColumns = true; } } catch (Exception) { if (sqlcon.State != ConnectionState.Open) { MessageBox.Show("подключения не существует"); } } finally { if (sqlcon.State == ConnectionState.Open) { sqlcon.Close(); select(); } } } и все работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=17&gotonew=1&tid=1352685]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 368ms |

| 0 / 0 |
