0

基本的に私がやっていることは、ユーザーが人の名前を入力し、ボタンを押して、選択したフィールドを編集/削除できるようにすることです。

デフォルトの gridview プロパティを使用して、細かい編集/削除を行うことができます。しかし、編集を押すと、デフォルトの選択コマンドにリロードされます。私がする必要があるのは、テキストボックスのテキストを使用することです。

これは私がユーザーを検索する方法です

 protected void GetUser_Click(object sender, EventArgs e)
    {
        query = Session["username"].ToString();  
        string sql = "SELECT [Username], [Job Description] AS Job_Description, [Hours Worked] AS Hours_Worked, [Date], [ID] FROM [TimeData] WHERE ([Username] LIKE '" + query+ "')";
        Response.Write("done");
        SqlDataSource1.SelectCommand = sql;
    }

したがって、ページの読み込み時に、編集を押す前に何を入力したかを「覚えておく」必要があります。

ASPX ファイルでは、selectcommand を空白のままにして、代わりに Page_load メソッドに設定します。

 protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.Visible = true;
        Session["Username"] = UserBox.Text;
        //Session["Username"] = "rhys";
        query = Session["username"].ToString();
        string sql = "SELECT [Username], [Job Description] AS Job_Description, [Hours Worked] AS Hours_Worked, [Date], [ID] FROM [TimeData]";
        //Response.Write("done");
        SqlDataSource1.SelectCommand = sql;   
    }

Atm もう一度表示することはできますが、ユーザー名ではなく、テーブル全体を再度クエリしています

変数などをポストバックする方法を探していましたが、何も機能していないようです。

どんな助けでも大歓迎です。

編集:コメントは役に立ちましたが、ボタンを押しました

  protected void GetUser_Click(object sender, EventArgs e)
 {
 query = Session["username"].ToString();
 string sql = "SELECT [Username], [Job Description] AS Job_Description, [Hours Worked] AS Hours_Worked, [Date], [ID] FROM   [TimeData] WHERE ([Username] LIKE '" + query + "')"; 
Response.Write("done");
 SqlDataSource1.SelectCommand = sql; 

} 

" 変更を返さなくなりました。これは、同じコードが !postback の後のブロックの else 部分にあるためでしょうか?

4

1 に答える 1

0

そのはず:

protected void Page_Load(object sender, EventArgs e)
{
     if(!Page.IsPostBack)
     {
        GridView1.Visible = true;
        Session["Username"] = UserBox.Text;
        query = Session["username"].ToString();
        string sql = "SELECT [Username], [Job Description] AS Job_Description, [Hours Worked] AS Hours_Worked, [Date], [ID] FROM [TimeData]";
        SqlDataSource1.SelectCommand = sql; 
     } 
}

現状では、ページの読み込みによって、イベント ハンドラーが実行した内容が上書きされます。

また、SQL インジェクションから身を守るためのユーザーパラメータiezd クエリ

于 2013-02-08T23:07:29.340 に答える