0

我的要求是在每次回发时刷新数据,但如果这样做,我的 rowcommand 事件不会在 gridview 中的链接按钮单击时触发?我怎样才能实现它?

我正在使用 jquery 更改行顺序并将新顺序保存在隐藏变量中。在页面回发上,我从隐藏变量中获取新订单,并用新订单重新绑定网格。

每次页面回发时,我都需要用新订单重新绑定网格。当我单击网格中的编辑/删除链接按钮但不会触发 rowcommand 事件时,会发生回发。

     protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
              string order = hdnOrder.Value.ToString();
               if (order != string.Empty)
               {
                ReOrder();
               } 
         }
       }

 protected void ReOrder()
        {
            DataTable dt = new DataTable();

            if (ViewState["data"] != null)
            {
                dt = (DataTable) ViewState["data"];

                string[] order = hdnOrder.Value.Split(',');

                for (int i = 0; i < order.Length; i++)
                {
                    DataRow[] keyRows;

                    keyRows = dt.Select("ID='" + order[i] + "'");
                    if (keyRows.Length > 0)
                    {
                        int index = dt.Rows.IndexOf(keyRows[0]);

                        dt.Rows[index].SetField("Precedence", i + 1);
                    }
                }
                DataView dv = dt.DefaultView;
                dv.Sort = "Precedence ASC";

                ViewState["data"] = dv.ToTable();

                grd.DataSource = ViewState["data"];
                grd.DataBind();
                hdnOrder.Value = string.Empty;
            }
        }
4

1 回答 1

1

如果以下情况属实:

  1. 您需要处理行命令;
  2. 您需要重新绑定网格,但让它也反映行命令的结果

...它应该像在PreRender事件处理程序而不是Load事件处理程序中重新排序一样简单。

于 2012-09-28T15:39:04.640 回答