Копирование одной таблицы в другую

у меня есть два gridview, один подключен к одной таблице, а другой подключен к другой таблице, как в одной базе данных

таблица1 таблица2

сетка1 сетка2

когда запись в gridview1 выбрана с помощью инструмента выбора gridview, то, нажав кнопку, она переместит запись в таблицу2 и теперь отображается в gridview 2, я пытался

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow r = GridView1.SelectedRow;
    string strQuery = "insert into table values('" + r.Cells[0] + "','" + r.Cells[1] + "')";
}

но мне нужно, чтобы он был подключен к кнопке 1, и я пробовал другие

protected void btnSend_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("MenuName");
    dt.Columns.Add("MenuID");

    foreach (GridViewRow grdRow in gridview1.Rows) ////////////// Add new Data from GridMenuList TO Datatable DT
        {
            if (((CheckBox)grdRow.FindControl("chkSelect")).Checked)
            {
                DataRow drow = dt.NewRow();

                Label lblMenuName = (Label)grdRow.FindControl("lblMenuName");

                HiddenField hdnID = (HiddenField)grdRow.FindControl("hdnID");

                drow["MenuName"] = lblMenuName.Text;               
                drow["MenuID"] = hdnID.Value;

                dt.Rows.Add(drow);
            }
        }
    if (dt.Rows.Count > 0)
    {
        gridview2.DataSource = dt;
        gridview2.DataBind();
    }
}

protected void gridview2_RowDataBound(object sender, GridViewRowEventArgs e)
{

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView dr = (DataRowView)e.Row.DataItem;

        //e.Row.Cells[0].Text = dr["MenuName"].ToString();
        Label lblMenuName = e.Row.FindControl("lblMenuName") as Label;
        lblMenuName.Text = dr["MenuName"].ToString();

        HiddenField hdnID = e.Row.FindControl("hdnID") as HiddenField;
        hdnID.Value = dr["MenuID"].ToString();
     }
}

не могу заставить его работать

следуя совету пользователя 3607430, я попробовал

protected void buttonMove_Click(object sender, EventArgs e)
{
    GridViewRow row = GridView1.SelectedRow;
    SqlCommand move = new SqlCommand("Command String", cn);
    cn.Open();
    move.CommandText = "INSERT into queue values  ('" + row.Cells[1].Text + "')";
    cn.Close();
}

но не работает


person ghost10000    schedule 15.01.2015    source источник


Ответы (1)


Прежде всего, вы должны использовать

GridViewRow row = gridview1.SelectedRow;

вместо запуска цикла для поиска выбранной строки. Это даст вам строку, которую вы хотите добавить. Ваши сетки уже подключены к таблицам, поэтому вы пытаетесь связать их с переменной DataTable, что означает, что они будут отключены от вашей таблицы в базе данных. Итак, как только вы выбрали строку, вы должны получить данные, добавить их в таблицу 2, а затем вызвать обновление на gridview2

Надеюсь, поможет

person user3607430    schedule 15.01.2015