ユーザーが一部のデータを編集でき、残りのデータは編集できないデータベースからのデータを表示するために使用できる最良のコントロール/方法は何ですか? データグリッドを使用する必要はありません。データベースから各データを読み取り、その表示/編集コントロールを自動的に作成する必要があります..
何かのようなもの:
DataTable myTable = myRow.Table;
foreach (DataColumn nextCol in myTable.Columns)
{
// filter out Name, Age, ID, Salary
// if nextCol is Name, Age, ID, or Salary
// continue
// add a label and text box for next column
Label nextLabel = new Label();
nextLabel.Text = nextCol.Caption;
// add next label to your control
// add a text box for the next column
TextBox nextTb = new TextBox();
// add next text box to your control
// assume your table sets up columns as write enabled or read only
nextTb.ReadOnly = nextCol.ReadOnly;
// keep track of write enabled text boxes - SEE BELOW
if (!nextCol.ReadOnly)
{
dataCols.Add(nextCol.Caption, nextCol);
textBoxes.Add(nextCol.Caption, nextTb);
}
}
ユーザーがダイアログを閉じたときにデータ行を更新できるように、書き込み可能なテキスト ボックスを追跡し、それらをテーブルの列に関連付ける必要があります。これは、さまざまな方法で行うことができます。一方で、これは 2 つの Dictionary であり、それぞれがデータ列のキャプションによってキー付けされます。1 つのディクショナリにはデータ列が含まれ、もう 1 つのディクショナリには対応するテキスト ボックスが含まれます。次に、ユーザーがダイアログを閉じたときに、列の値をテキスト ボックスの値で更新できます。
Dictionary<String, DataColumn> dataCols;
Dictionary<String, TextBox> textBoxes;
foreach (String nextColName in dataCols.Keys)
myRow[dataCols[nextColName]] = (Object)textBoxes[nextColName].Text;
JQueryデータテーブルを使用できます。それも編集可能です。
DataTables Editable プラグインが初期化されると、Update、Delete、および Add リクエストがサーバー側に送信されます。JQuery DataTables Editable プラグインを使用すると、ユーザーはテーブル内の行を選択して削除できます。ユーザーが削除ボタンを押すと、削除されるレコードの ID の情報を使用して AJAX 要求が行われます。
セル値の編集
セルの編集は、セルをクリックしてインラインで行います。ユーザーが編集を終了すると、セルの位置とセルの値を含む AJAX 要求がサーバー側に送信されます。
更新リクエストには次のパラメータがあります。
value - 編集されたテキスト
id - 編集されたレコードの ID (ID は、編集されたセルを囲む TR タグに配置されます)
columnId - 編集されたセルの列の位置
columnPosition - 編集されたセルの列の位置 (非表示の列はカウントされません)
rowId - 編集されたセルを含む行の ID
セルがサーバー側で正常に更新された場合、サーバーはセルの新しい値を返すか、エラー メッセージを返します。
jQueryData テーブルを初期化するコード
このコードを使用できます
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$('#myDataTable').dataTable().makeEditable();
});
</script>