2012-12-12 27 views
0

我在c#编程中有点新,所以我被困在一个地方。需要你的帮助。 其实通过javascript我生成表(4列)行(具有文本框,以便用户可以提供输入)按用户按钮单击。由于行数不固定,我们没有文本框的确切名称,所以现在我的问题是我们应该如何将这些行插入到sqlserver表中?“将动态生成的行插入到表中”

我应该使用简单的循环来为每个用户按钮点击生成文本框的名称吗?一旦我们得到所有控件的名称,我们可以通过使用循环通过一个插入语句插入这些全部?

温暖regrads, 书童

+1

Web窗体或MVC? – Teddy

回答

0

如果您使用只是一个普通的HTML表格add 'runat="server"' Tag with JS以及HTML表单控件然后就change TableRow to HtmlTableRowTextBox 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; 
    } 
0

我asuming你使用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(); 
} 

这样简单!

相关问题