0

私の要件は、すべてのポストバックでデータを更新することですが、そうすると、グリッドビューのリンクボタンクリックでrowcommandイベントが発生しませんか?どうすればそれを達成できますか?

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 に答える