“将动态生成的行插入表中”

时间:2012-12-12 07:17:13

标签: c#

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

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

温暖的回归, 书童

2 个答案:

答案 0 :(得分:0)

如果您只使用常规html表add 'runat="server"' Tag with JS以及html表单控件,那么只需change TableRow to HtmlTableRowTextBox to HtmlInputText。所有这些控件都在System.Web.UI.HtmlControls namespace

假设您正在使用Table服务器控件,那么它只是:

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;
    }

答案 1 :(得分:0)

我想你正在使用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();
}
这很简单!