0

データベースからデータを取得し、 3 つの列で構成されるデータテーブルを返すメソッドを作成しました。

このデータテーブルは、ID フィールドを非表示にした後、gridview コントロールバインドしています。

        DataTable dt = _qbObj.getAllTags();
        dvTags.DataSource = dt;

        BoundField bfName = new BoundField();
        bfName.DataField = dt.Columns["Name"].ToString();
        bfName.HeaderText = "Name";

        BoundField bfId = new BoundField();
        bfId.DataField = dt.Columns["ID"].ToString();
        bfId.Visible = false;

        BoundField bfDesc = new BoundField();
        bfDesc.DataField = dt.Columns["Description"].ToString();
        bfDesc.HeaderText = "Description";            

        dvTags.Columns.Add(bfId);
        dvTags.Columns.Add(bfName);
        dvTags.Columns.Add(bfDesc);
        dvTags.DataBind();

このグリッドビュー コントロールに編集ボタンを追加します。これにより、更新された詳細を入力できる jquery モーダル ダイアログ ボックスがポップアップ表示されます。

を使用できることはわかっていますが、問題は、ページを更新せずにそのモーダル ダイアログ ボックスをポップする必要があることです。

したがって、グリッドビュー内にこれを挿入しました。これはItem Templateです。

        <asp:GridView ID="dvTags" runat="server" CssClass="labs-grid-view" 
            AutoGenerateColumns="False" >
            <Columns>   
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="btnEdit" runat="server" Text="Edit" OnClick="dvTagEdit" CommandName="UpdateRecord"
                            CommandArgument='<%# Eval("ID") %>' />
                    </ItemTemplate>
                </asp:TemplateField>                                 
            </Columns>
        </asp:GridView>

編集が完了した後、グリッドビューは自動的に更新されないため、このコードを使用して既存の「動的に挿入された列」を削除する専用のグリッド更新ボタンがあります:-

        int noOfRows = dvTags.Columns.Count;
        if (noOfRows > 1)
        {
            dvTags.Columns.RemoveAt(noOfRows - 1);
            dvTags.Columns.RemoveAt(noOfRows - 2);
            dvTags.Columns.RemoveAt(noOfRows - 3);
            // THERE ARE A TOTAL OF **THREE** COLUMNS
        }  

しかし、問題は、ページを数回更新した後、ItemTemplate 内のボタンが消え、html が " " に置き換えられることです。

エラーを見つけるのを手伝ってください。これを達成するためのより良い、より簡単な方法があると思います。もしそうなら、私は彼らに対してオープンです。

読んでくれてありがとう、

アビジート。

4

1 に答える 1

1

考慮すべき点がいくつかあります。

まず、モーダル ポップアップをレンダリングし、更新を実行している ItemCommand イベントのコード ビハインドを投稿できますか? 編集後の更新が適切に処理されていない可能性があります。

次に、GridView でデータバインディングを「インライン」で実行する代わりに、Gridview 内で RowDataBound イベントを使用することを検討してください。どの行が生成されているか (ヘッダー、データ、フッター) を検出でき、そこに編集ボタンを適切に作成できます。さらに良いことに、このメソッド内からボタンにアクセスして、CommandArgument を ID に設定するだけです。

第 3 に、GridView で asp ボタンを使用すると、クリックすると "ItemCommand" イベントがトリガーされ、ポストバックが発生します。

テンプレート列に簡単なリンクを設定するか、jQuery モーダルをトリガーするために使用できるものを用意することをお勧めします。また、アイテムの静的な命名規則を設定して、編集のためにモーダル ポップアップに入れるデータを適切に取得することをお勧めします。 . そこから、通常どおり更新を処理できるはずです。

ここで何かが役立つことを願っています。

于 2013-01-08T20:27:08.293 に答える