データベースからデータを取得し、 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 が " " に置き換えられることです。
エラーを見つけるのを手伝ってください。これを達成するためのより良い、より簡単な方法があると思います。もしそうなら、私は彼らに対してオープンです。
読んでくれてありがとう、
アビジート。