0

私はasp.netで多くのテキストボックスといくつかのドロップダウンリストを持つフォームに取り組んでいます.現在、特定のテキストフォームのtextchangeイベントでデータベースからこれらのテキストボックスを動的に入力しようとしています

つまり、jobId という名前の特定のテキスト ボックス (ジョブ ID はデータベース テーブルの主キー) です。誰かが 10 を入力すると、フィールドの残りの部分に主キーを 10 として値が入力されます。

これは初めて機能しますが、最終的には次のようなエラーが発生します

The state information is invalid for this page and might be corrupted.

値は変更されません。

AJAX を使用して HTML ドキュメントを別のドキュメント内に読み込んでいるため、このエラーが発生するのはなぜですか?

さらに明確にするために、ここに私のコードを示します。

引き金:

<asp:TextBox ID="Job_No" runat="server" Text="New" 
            ontextchanged="Job_No_TextChanged" AutoPostBack="true"></asp:TextBox>

関数:

  protected void Job_No_TextChanged(object sender, EventArgs e)
    {
        //SqlCommand cmd2 = new SqlCommand("");
        SqlDataAdapter sda = new SqlDataAdapter("select job_no from job_mstr", con);
        DataTable dt = new DataTable();
        sda.Fill(dt);
       // check = 1;
        try
        {
            foreach (DataRow row in dt.Rows)
            {
                if (row["job_no"].ToString() == Job_No.Text)
                {

                   // check = 0;
                    int id = Convert.ToInt32(Job_No.Text);

                    Job_No.Text = id.ToString();
                    con.Open();
                    SqlCommand cmd1 = new SqlCommand("select JOB_MILESTONE_DT,start_dt,end_dt,CUST_REF,convert(varchar,CUST_REF_DT,103) ,convert(varchar,due_date,103) ,JOB_DESC,LINKED_JOB,CLIENT_CONTACT,CONTACT_EMAIL,APPROVAL_USER,convert(varchar,approval_DT,103) ,TOT_QTY,cost,job_type,JOB_CATEGORY from job_mstr where job_no=" + id, con);
                    SqlDataReader dr = cmd1.ExecuteReader();
                    if (dr.Read())
                    {
                        JobM_Dt.Text = dr[0].ToString();
                        StartTim.Text = dr[1].ToString();
                        EndTime.Text = dr[2].ToString();
                        Cust_refTxt.Text = dr[3].ToString();
                        Cust_Ref_DtTxt.Text = dr[4].ToString();
                        Due_DtTxt.Text = dr[5].ToString();
                        Job_DescTxt.Text = dr[6].ToString();
                        Linked_JobTxt.Text = dr[7].ToString();
                        Client_ContactTxt.Text = dr[8].ToString();
                        Client_EmailTxt.Text = dr[9].ToString();
                        Approval_UsrTxt.Text = dr[10].ToString();
                        Approval_DtTxt.Text = dr[11].ToString();
                        Tot_QtyTxt.Text = dr[12].ToString();
                        CostTxt.Text = dr[13].ToString();
                        Job_TypeTxt.Text = dr[14].ToString();
                        Job_CatogeryTxt.Text = dr[15].ToString();


                    }

                    dr.Close();
                    return;
                }
                else if (check == 1)
                {
                    // Job_No.Text = "New";
                    JobM_Dt.Text = "";
                    StartTim.Text = "";
                    EndTime.Text = "";
                    Cust_refTxt.Text = "";
                    Cust_Ref_DtTxt.Text = "";
                    Due_DtTxt.Text = "";
                    Job_DescTxt.Text = "";
                    Linked_JobTxt.Text = "";
                    Client_ContactTxt.Text = "";
                    Client_EmailTxt.Text = "";
                    Approval_UsrTxt.Text = "";
                    Approval_DtTxt.Text = "";
                    Tot_QtyTxt.Text = "";
                    CostTxt.Text = "";
                    Job_TypeTxt.Text = "";
                    Job_CatogeryTxt.Text = "";
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
    }
4

1 に答える 1

1

これを行う最良の方法は、jquery ajaxを使用して必要な値をサービスに渡してWebサービスを呼び出し、jqueryを使用してテキストボックスに入力するために使用できるJSON形式のオブジェクトをサービスに返すことです。 。

于 2012-07-05T09:03:53.080 に答える