簡體   English   中英

在ASP.NET Web應用程序中使用C#單擊“下一步”按鈕后,該變量不是增量變量

[英]The variable is not incremental after click the “Next” button using C# with asp.net web application

我正在嘗試從數據庫中過濾記錄,並通過單擊"Next"按鈕將其一一顯示在textfields字段中。 每當單擊"Next"按鈕時,我都會放置代碼"pos++"來增加索引,以便每個記錄都將顯示在textfield

但是它只導航textfield的前2條記錄,當我再次單擊"Next"按鈕時它停止。 對於下面的代碼, "..."表示省略了一些代碼以便於閱讀。

  1. 我嘗試使用lbpos.Text = pos.ToString();來捕獲索引lbpos.Text = pos.ToString(); ,索引最多為1,不會遞增,我認為這是它在文本字段上僅顯示2條記錄的原因。

  2. 我使用session來保留dataTable中的選擇記錄的狀態。Session Session["session"] = dt; ,並使用dt = (DataTable)Session["session"];檢索

  3. 我嘗試查看數據源是否包含數據

     if (Session["session"] == null) lbsession.Text = "Null"; 

    但它似乎不為null,因為它不顯示字符串“ null”。

碼:

namespace WebApplication1
{
    public partial class mypage : System.Web.UI.Page
    {
        private DataSet ds = new DataSet();
        private SqlDataAdapter adapter;

        DataTable dt = new DataTable();

        string connString = @"Data Source=DESKTOP- 
 J12F5GP\sqlexpress;Initial Catalog=16ThingsDB;Integrated Security=True";

        int pos;

    ...
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        ...
        else if (droplistsearchby.SelectedValue == "Talked")
        {
            string query = "select * from [dbo].[Students] WHERE 
Talked like '%' + @Talked + '%'";
            com.CommandText = query;
            com.Connection = con;
            com.Parameters.AddWithValue("Talked", txtsearchby.Text);

            adapter = new SqlDataAdapter(com);
            adapter.Fill(dt);

            GridView1.DataSource = dt;
            Session["session"] = dt;
            GridView1.AutoGenerateColumns = true;
            GridView1.DataBind();

            lbrequestrows.Text = "No of records in this table: " + GridView1.Rows.Count.ToString();
            showData(pos);
            con.Close();
        }
    }

    public void showData(int index)
    {
        txtid.Text = dt.Rows[index][0].ToString();
        txtfirstname.Text = dt.Rows[index][1].ToString();
        txtlastname.Text = dt.Rows[index][2].ToString();
           ...
        txttitle.Text = dt.Rows[index][4].ToString();
        txtdept.Text = dt.Rows[index][5].ToString();
        txtcompany.Text = dt.Rows[index][6].ToString();
    }

    protected void btnNext_Click(object sender, EventArgs e)
    {
        dt = (DataTable)Session["session"];
        pos++;

        lbpos.Text = pos.ToString();

        if (Session["session"] == null)
            lbsession.Text = "Null";

        lblError.Text = (dt.Rows.Count).ToString();

        if (pos >= dt.Rows.Count)
            pos = 0;

        showData(pos);
    }
}

我希望在單擊“下一步”按鈕時瀏覽文本字段上的記錄。

當HTTP請求進入時,將創建Page類的實例。 頁面處理完成后,HTTP響應發送到客戶端,頁面類的實例消失。 回發發生時,將創建Page類的實例。 因此,在Page類中將變量存儲在本地字段中沒有意義。 您將需要將狀態存儲在其他位置。

ViewState,Session,頁面上的隱藏表單值,數據庫。 這些都是可用於存儲應用程序狀態的選項。

您可以通過將pos變量初始化為int pos = 0來進行嘗試;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM