0

我有一个包含从数据库填充的表的页面。它看起来有点像这样:

System   Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep  Oct   Nov   Dec
1        x     x     x     x     x     x     x     x     x    x     x     x
2        x     x     x     x     x     x     x     x     x    x     x     x
6        x     x     x     x     x     x     x     x     x    x     x     x

表格中的每个单元格(即上图中的每个“x”)都包含一个用户需要在其中输入值的文本框。我使用列标题和系统编号(例如“feb2”、“mar6”、“oct1”)动态地为每个文本框分配一个 ID。

页面底部是一个保存按钮,当按下该按钮时,将更新数据库中所有系统和所有月份的值。

我的问题是:如何在不知道文本框 ID 的情况下获取文本框的值并调用 sql 函数来更新值?

这是我想用 jQuery(我更熟悉的一种语言)做的一个例子:

function saveValues(){
    var rows = $("#SystemTargetsTable tr:not(:first-child)"); // skip the header row
    var systemID;
    var jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec;

    rows.each(function(index) {        
    systemID = $(this).attr('id').substring(6);

    jan = $('#Jan' + systemID).val();
    feb = $('#Feb' + systemID).val();
    mar = $('#Mar' + systemID).val();
    apr = $('#Apr' + systemID).val();
    may = $('#May' + systemID).val();
    jun = $('#Jun' + systemID).val();
    jul = $('#Jul' + systemID).val();
    aug = $('#Aug' + systemID).val();
    sep = $('#Sep' + systemID).val();
    oct = $('#Oct' + systemID).val();
    nov = $('#Nov' + systemID).val();
    dec = $('#Dec' + systemID).val();

    //ONCE I HAVE THE VALUES FOR EACH MONTH I WOULD LIKE TO CALL AN UPDATE STATEMENT USING THE SYSTEM ID. ONLY OF COURSES I CANNOT DO TIS FROM JAVASCRIPT!
  }); 
}  

感谢您的时间。我希望这一切都有意义!

4

2 回答 2

0

在不知道唯一列的 ID 的情况下,您无法更新和 sql 表行,在您的情况下是系统列。
这是我所做的:
当您使用动态文本框为每一行填充表格时,您分配文本框的 id = 该行的系统 id 值。

<asp:TextBox ID="System.ID_Value(FromDB)"  value="Month_Value_(value from DB)" runat="server"></asp:TextBox>

then on the click event of the save button 

 protected void Button1_Click(object sender, EventArgs e)
    {
        foreach (var row in Table1.Rows)
        {
            string[] allkeys = Request.Form.AllKeys;
            foreach (string key in allkeys)
            {
                if (key.ToUpper().StartsWith("System_ID"))
                {
                    var ID = Convert.ToInt32(key.Split('_')[1]);           
                }
                if (key.ToUpper().StartsWith("MOnth_Value"))
                {
                    var Jan = Convert.ToInt32(key.Split('_')[2]);
                    var feb = Convert.ToInt32(key.Split('_')[3]);
                }
                // and so on then you call the update method
            }  
        }
    }
于 2012-10-01T17:47:56.543 回答
0

使用 runat="server" 属性和提供 ID 来控制此表服务器,例如;tbl1,然后循环通过表行

  for (var i = 0; i<tbl1.Rows.Count; i++)
             {
                 var txtJan = tbl1.Rows[i].FindControl("Jan" + i.ToString()); 

var janValue =txtJan.Text;

             }
于 2012-10-01T16:48:58.613 回答