我对 c# 编程有点陌生,所以我被困在一个地方。需要你的帮助。实际上,通过 javascript,我正在根据用户按钮单击生成表(4 列)行(具有文本框以便用户可以提供输入)。由于行数不固定,而且我们没有文本框的确切名称,所以现在我的问题是我们应该如何将这些行插入到 sqlserver 表中?
我应该简单地使用循环来为每个用户按钮单击生成文本框的名称吗?一旦我们获得了所有控件的名称,我们是否可以使用循环通过单个插入语句将它们全部插入?
温暖的毕业生,艾米
我对 c# 编程有点陌生,所以我被困在一个地方。需要你的帮助。实际上,通过 javascript,我正在根据用户按钮单击生成表(4 列)行(具有文本框以便用户可以提供输入)。由于行数不固定,而且我们没有文本框的确切名称,所以现在我的问题是我们应该如何将这些行插入到 sqlserver 表中?
我应该简单地使用循环来为每个用户按钮单击生成文本框的名称吗?一旦我们获得了所有控件的名称,我们是否可以使用循环通过单个插入语句将它们全部插入?
温暖的毕业生,艾米
我假设您正在使用 MVC .. 您可以从创建一个模型开始,例如:
public class YourModel
{
public IEnumerable<Users> users { get; set; }
}
比创建一个视图并通过下面给出的脚本动态添加行:
<script type="text/javascript">
var Rows = 1;
// We already got the 0 element as html so start from 1
function AddUser() {
$("#UserTable").append('<tr>' +
'<td><input type="text" name="users[' + Rows + '].Name" style="width:100px;" /></td>' +
'<td><input type="text" name="users[' + Rows + '].Surname" style="width:100px;" /></td>' +
'<td><input type="text" name="users[' + Rows + '].Age" style="width:50px;" /></td>' +
'<td><input type="text" name="users[' + Rows + '].Date" style="width:70px;" /></td>' +
'</tr>');
// Add datepicker (this is an optional jQueryUI stuff)
$('input[name="users[' + Rows + '].Date"]').datepicker({ dateFormat: 'yy.mm.dd' });
// Go to next row
Rows = Rows + 1;
}
$(document).ready(function(){
// Create an empty row on load
AddUser();
// Than on each click add another row
$('input[type=button]').click(function(){ AddUser(); });
});
</script>
<div>
<table id="UserTable">
<tr>
<td><input type="text" name="user[0].Name" style="width:100px;" value="Berker" /></td>
<td><input type="text" name="user[0].Surname" style="width:100px;" value="Yüceer" /></td>
<td><input type="text" name="user[0].Age" style="width:50px;" value="24" /></td>
<td><input type="text" name="user[0].Date" style="width:70px;" value="2012.12.11" /></td>
</tr>
</table>
<input type="button" id="add" value="Add" />
</div>
脚本的小提琴:http: //jsfiddle.net/BerkerYuceer/YFecD/
从您的控制器中,您可以获得如下所示的值:
// Thanks to LinqToSql you can define ur Sql-DB this way
YourDBDataContext db = new YourDBDataContext();
//
// POST: /YourForm/Edit
[HttpPost]
public ActionResult Edit(YourModel model)
{
try
{
// if users not empty..
if (model.users != null)
{
// Each User in Users
foreach (var user in model.users)
{ // Save it to your Sql-DB
db.Users.InsertOnSubmit(user);
db.SubmitChanges();
}
}
// Return
return RedirectToAction("Index");
}
catch (Exception ex)
{
return RedirectToAction("Error", new { ErrorMessage = "Message[" + ex.Message + "] - Source[" + ex.Source + "] - StackTrace[" + ex.StackTrace + "] - Data[" + ex.Data + "]" });
}
}
//
// GET: /YourForm/Error
public ActionResult Error(String ErrorMessage)
{
ViewData["Error"] = ErrorMessage;
return View();
}
就这么简单!
如果您只使用常规 html 表格add 'runat="server"' Tag with JS
以及 html 表单控件,那么只需使用change TableRow to HtmlTableRow
和TextBox to HtmlInputText
. 所有这些控件都在System.Web.UI.HtmlControls namespace
.
假设您使用的是表服务器控件,那么它只是:
foreach (TableRow row in table.Rows)
{
var col2 = (TextBox)row.Cells[1].Controls[0];
//Do DB inserting stuff here With col2
string stringToInsert= col2 .Text;
}