0

aspx Web アプリケーションからデータベースをいっぱいにしています。

ユーザーがデータをDBに入力するために複数のページを使用するという事実を除いて、すべてが正常に機能します。

だから、私は1つのclass.csファイルでこのメソッドを取得しました:

public class Botones
{
public void SaveCVInfo2(string varOne,string varTwo, string  varThree)
{
using (ConexionGeneralDataContext db = new ConexionGeneralDataContext())
{
    Usuario_Web columna = new Usuario_Web();
    //Add new values to each fields
    columna.Nombre = varOne;
    columna.Apellido = varTwo;
    columna.Em_solicitado = varThree;
    //and the rest where the textboxes would have been


    //Insert the new Customer object
    db.Usuario_Web.InsertOnSubmit(columna);
    //Sumbit changes to the database
    db.SubmitChanges();
 }

 }
 }

これはファイルの一部に過ぎず、列が増えていますが、例は変更されていません。

ただし、2 ページ目のボタンからメソッドを参照するために、別の class.cs ファイルを追加しました。この投稿で以前に投稿したものと同じように:

public class Botones2
{
    public void SaveCVInfo3(string varOne, string varTwo, string varThree, string varFour, string varFive, string varSix, string varSeven,
    string varEight, string varNine, string varTen, string varEleven, string varTwelve, string varThirteen, string varFourteen, string varFifteen)
    {
        using (ConexionGeneralDataContext db = new ConexionGeneralDataContext())
        {
            Usuario_Web columna = new Usuario_Web();
            //Insert the new Customer object
            columna.Estatus = 1;
            columna.nombre_esposo = varOne;
            columna.profe_compa = varTwo;
            columna.emp_compa = varThree;
            columna.cargo_actual_compa = varFour;
            columna.Hijos = varFive;
            columna.Edades_hijos = varSix;
            columna.persona_depende_compa = varSeven;
            columna.afinidades = varEight;
            columna.Edades_depende = varNine;
            columna.nom_padre = varTen;
            columna.profesion_padre = varEleven;
            columna.tel_padre = varTwelve;
            columna.nom_madre = varThirteen;
            columna.profesion_madre = varFourteen;
            columna.tel_madre = varFifteen;

            db.Usuario_Web.InsertOnSubmit(columna);
            //Sumbit changes to the database
            db.SubmitChanges();
        }
    }
}

ご覧のとおり、同じテーブルにデータベースに入力している列が他にもありますが、問題は、2番目のページからSQLサーバーにデータを送信すると、Usuario_web最初のクラスで参照した列なしで新しい列が作成されることです.

私が必要としbindているのは、最初のページからすでに送信されたデータを何とかすることです。したがって、最初のクラスは他のすべてのクラスに関連付けられ、列は同じ行に入力されます。

この状況の対処法を知っている方がいましたら教えてください。

編集

これは、ASP ボタンからメソッドを呼び出す方法です。

protected void Button1_Click(object sender, EventArgs e)
{
    Botones botones = new Botones();
    botones.SaveCVInfo2(nombre.Text, Apellidos.Text, EmpleoS.Text);
}

そして SaveCVInfo3:

protected void Button1_Click(object sender, EventArgs e)
{
    Botones2 botones2 = new Botones2();
    botones2.SaveCVInfo3(nombre_compa.Text, Profesion_compa.Text, Emp_trabaja.Text, Cargo_compa.Text, RadioButtonList8.SelectedItem.Text, edades_sons.Text, num_depende.Text, Afinidad.Text, Edad_compa.Text, nom_padre.Text, profesion_compa_padre.Text, Tel_compa.Text, nom_madre.Text, profesion_compa_madre.Text, Tel_compa_madre.Text);
Response.Redirect("Envia3.aspx");
}
4

1 に答える 1

1

注意: 以下の未テストのコード。

SaveCVInfo2 から columna.ID を返します。

public int  SaveCVInfo2(string varOne,string varTwo, string  varThree)
{
    int columnaId = 0;
    using (ConexionGeneralDataContext db = new ConexionGeneralDataContext())
    {
        Usuario_Web columna = new Usuario_Web();
        //Add new values to each fields
        columna.Nombre = varOne;
        columna.Apellido = varTwo;
        columna.Em_solicitado = varThree;
        //and the rest where the textboxes would have been    

        //Insert the new Customer object
        db.Usuario_Web.InsertOnSubmit(columna);
        //Sumbit changes to the database
        db.SubmitChanges();
        columnaId = columna.ID;
    }
    return columnaId;
}

メソッドを呼び出し、ID を取得して、次のようにセッションに保存します。

protected void Button1_Click(object sender, EventArgs e)
{
    int columnaId = 0;
    Botones botones = new Botones();
    columnaId = botones.SaveCVInfo2(nombre.Text, Apellidos.Text, EmpleoS.Text);
    Session["columnaId"] = columnaId.ToString();
}

SaveCVInfo3 メソッドを呼び出すときに、columnaId を渡すことができます。

protected void Button1_Click(object sender, EventArgs e)
{
    int columnaId = 0;
    if(Session["columnaId"] != null && int.TryParse(Session["columnaId"].ToString(), out columnaId)
    {
        Botones2 botones2 = new Botones2();
        botones2.SaveCVInfo3(columnaId, nombre_compa.Text, Profesion_compa.Text, Emp_trabaja.Text, Cargo_compa.Text, RadioButtonList8.SelectedItem.Text, edades_sons.Text, num_depende.Text, Afinidad.Text, Edad_compa.Text, nom_padre.Text, profesion_compa_padre.Text, Tel_compa.Text, nom_madre.Text, profesion_compa_madre.Text, Tel_compa_madre.Text);
        Response.Redirect("Envia3.aspx");
    }
}

SaveCVInfo3 メソッドでは、前のページで既に保存されている Id でオブジェクトを取得して編集し、保存します。

public void SaveCVInfo3(int columnaId, string varOne, string varTwo, string varThree, string varFour, string varFive, string varSix, string varSeven,
    string varEight, string varNine, string varTen, string varEleven, string varTwelve, string varThirteen, string varFourteen, string varFifteen)
{
    using (ConexionGeneralDataContext db = new ConexionGeneralDataContext())
    {
        //You will need to add reference to Linq if not added already
        //Usuario_Web columna = new Usuario_Web();
        //Insert the new Customer object

        Usuario_Web columna = (Usuario_Web)db.Usuario_Webs.Find(columnaId);
        columna.Estatus = 1;
        columna.nombre_esposo = varOne;
        columna.profe_compa = varTwo;
        columna.emp_compa = varThree;
        columna.cargo_actual_compa = varFour;
        columna.Hijos = varFive;
        columna.Edades_hijos = varSix;
        columna.persona_depende_compa = varSeven;
        columna.afinidades = varEight;
        columna.Edades_depende = varNine;
        columna.nom_padre = varTen;
        columna.profesion_padre = varEleven;
        columna.tel_padre = varTwelve;
        columna.nom_madre = varThirteen;
        columna.profesion_madre = varFourteen;
        columna.tel_madre = varFifteen;

        //db.Usuario_Web.InsertOnSubmit(columna);
        //Sumbit changes to the database
        db.SubmitChanges();
    }
}

編集Id が主キーでない場合は、この部分を変更できます-

Usuario_Web columna = (Usuario_Web)db.Usuario_Webs.Find(columnaId);
に :

Usuario_Web columna =(Usuario_Web)db.Usuario_Web.Where(x=>x.ID == columnaId).FirstOrDefault()

于 2013-10-16T21:11:33.763 に答える