[英]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"
按鈕時它停止。 對於下面的代碼, "..."
表示省略了一些代碼以便於閱讀。
我嘗試使用lbpos.Text = pos.ToString();
來捕獲索引lbpos.Text = pos.ToString();
,索引最多為1,不會遞增,我認為這是它在文本字段上僅顯示2條記錄的原因。
我使用session來保留dataTable中的選擇記錄的狀態。Session Session["session"] = dt;
,並使用dt = (DataTable)Session["session"];
檢索
我嘗試查看數據源是否包含數據
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.