【问题标题】:GridView Edit/Delete Not refreshing correctly. ASP.NetGridView 编辑/删除 未正确刷新。 ASP.NET
【发布时间】:2013-02-08 22:50:02
【问题描述】:

基本上我所做的是允许用户输入人名,按下按钮并编辑/删除选择的字段。

我可以使用默认的 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 我可以让它再次出现,但我再次查询整个表,而不是通过用户名

我正在寻找一种可能回发变量或其他东西的方法,但似乎没有任何效果。

任何帮助将不胜感激。

编辑: cmets 对我按下的按钮有所帮助

  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 部分?

【问题讨论】:

  • 按照您当前的代码方式,您的值将在每次页面加载时设置(尤其是在回发时)。如果您不希望这种情况发生,则必须将初始化代码包装在 `If (IsPostback == False)

标签: asp.net


【解决方案1】:

应该是:

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; 
     } 
}

就目前而言,您的页面加载将覆盖您的事件处理程序所做的工作。

另外,用户 parameteriezd queries 保护自己免受 SQL 注入

【讨论】:

  • 这有点用。谢谢,但我按下的按钮 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("完成"); SqlDataSource1.SelectCommand = sql; } " 不再返回任何更改,是不是因为 !postback 之后块的 else 部分中存在相同的代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多