我可以用来显示数据库中的数据的最佳控件/方式是什么,用户可以在其中编辑一些数据而不能编辑其他数据。我不需要使用数据网格。我需要从数据库中读取每个数据并自动为其创建显示/编辑控件..
就像是:
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);
}
}
您需要跟踪已启用写入的文本框并将它们与表列相关联,以便您可以在用户关闭对话框时更新数据行。您可以通过多种方式做到这一点。顺便说一句,这可以是两个字典,每个都由数据列标题键入。一个字典包含数据列,另一个包含相应的文本框。然后当用户关闭对话框时,您可以使用文本框值更新列值。
Dictionary<String, DataColumn> dataCols;
Dictionary<String, TextBox> textBoxes;
foreach (String nextColName in dataCols.Keys)
myRow[dataCols[nextColName]] = (Object)textBoxes[nextColName].Text;
您可以使用 JQuery 数据表。它也是可编辑的。
初始化 DataTables Editable 插件时,它会向服务器端发送更新、删除和添加请求。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>