我可以使用什么样的最佳控件/方式来显示数据库中的数据,用户可以在其中编辑某些数据而不能编辑其他数据。 我不需要使用数据网格。 我需要从数据库中读取每个数据并自动对其进行显示/编辑控制..
类似的东西:
答案 0 :(得分:1)
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,每个由数据列标题键入。一个字典包含数据列,另一个字典包含相应的文本框。然后,当用户关闭对话框时,您可以使用文本框值更新列值。
Dictionary<String, DataColumn> dataCols;
Dictionary<String, TextBox> textBoxes;
foreach (String nextColName in dataCols.Keys)
myRow[dataCols[nextColName]] = (Object)textBoxes[nextColName].Text;
答案 1 :(得分:0)
您可以使用JQuery数据表。它也是可编辑的。
初始化DataTables Editable插件时,它会向服务器端发送Update,Delete和Add请求。 JQuery DataTables可编辑插件使用户可以选择和删除表中的行。当用户按下删除按钮时,会发出一个AJAX请求,其中包含已删除记录的id的信息。
编辑单元格值
通过单击来内联编辑单元格。当用户完成编辑时,将具有单元格位置和单元格值的AJAX请求发送到服务器端。
更新请求具有以下参数:
值 - 已修改的文字
id - 已编辑记录的ID(ID位于围绕已编辑的单元格的TR标记中)
columnId - 已编辑的单元格列的位置
columnPosition - 已编辑的单元格列的位置(不计算隐藏列)
rowId - 包含已编辑的单元格的行的ID
如果在服务器端成功更新了单元格,则服务器应返回单元格的新值,或者出现错误消息。
初始化jQueryData表的代码
您可以使用此代码
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$('#myDataTable').dataTable().makeEditable();
});
</script>