asp.net - 获取具有相同类的文本框的值数组

标签 asp.net javascript jquery

我为动态文本框数组设置自定义 CSS 类(输入为 HTML)

所以...现在我需要获取它的数组:

<input type="text" style="width: 50px;" class="DynamicTB" id="ctl00_ContentPlaceHolder1_GridView1_ctl02_id" readonly="readonly" value="1" name="ctl00$ContentPlaceHolder1$GridView1$ctl02$id">

确定客户并不真正知道输入的数量。这就是我使用类的原因,这就是我想要做的:

        $.each( { id : $("input.DynamicTB").css("value") }, 
        function(id){
            CallPageMethod("SelectBook", success, fail, "id",id);
        });

我不确定这个 $("input.DynamicTB").css("value") 是否正确 :( 但是

  1. 如何将整个值数组传输到 SelectBook 方法?

  2. 我的 javascript 很糟糕而且我的调试器 不要向我显示 javascript 错误,但 它只是不起作用,因为 每个都有问题。

然后...最后我只需要获取动态文本框的值数组并将它们传输到服务器端...mt [WebMethode] 看不到服务器端:(

[Web.Services.WebMethod]
public static SelectBook(id : array) : string
{
    id
}

当然我不知道如何在这里使用 jQuery .live 和绑定(bind)。

好的...现在问题解决了,这是我最后的方法 XD

页面:

      <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
  <script type="text/javascript">
      function CallPageMethod(methodName, onSuccess, onFail) 
      {
            var args = '';
            var l = arguments.length;
            if (l > 3)
            {
                for (var i = 3; i < l - 1; i += 2) 
                {
                    if (args.length != 0) args += ',';
                    args += '"' + arguments[i] + '":"' + arguments[i + 1] + '"';
                }
            }
            var loc = window.location.href;
            loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Report.aspx" : loc;
            $.ajax
            ({
                type: "POST",
                url: loc + "/" + methodName,
                data: "{" + args + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: onSuccess,
                fail: onFail
            });
        }

        function select() {

            var values = new Array();
            $("input.DynamicTB").each
                (
                function(i) {
                    values[i] = $(this).val();
                }
                );

                var valuesG = new Array();
                $("input.DynamicTBG").each
                (
                function(i) {
                    valuesG[i] = $(this).val();
                }
                );

            CallPageMethod("SelectBook", success, fail, "values", values, "valuesG", valuesG);
        }

  function success(response)
  {
    alert(response.d);
  }

  function fail(response)
  {
    alert("&#1054;&#1096;&#1080;&#1073;&#1082;&#1072;.");
  }
  </script>

添加代码:

  unless (GridView1.Rows.Count==0)
  {
    mutable ts=GridView1.Rows[0].Cells[0].Text.Split(':'); 
    mutable first=true;
    mutable cntrl=ts[1];
    foreach(index with row = GridView1.Rows[index] in [0..GridView1.Rows.Count-1])
    {
      unless (first) 
      ts=row.Cells[0].Text.Split(':');
      unless (ts.Length==1)
      {
      if (ts[1]==cntrl && !first)
      {
        row.Cells[0].Text=ts[0];
      }
      else
      {
      row.Cells[0].Text="";
      row.Cells[0].Controls.Add
                ({
                   def TB = TextBox(); TB.EnableViewState = false;
                   unless(row.Cells[0].Text == "&nbsp;")
                   {
                     TB.Text = ts[0];
                   }
                   TB.Visible=true;
                   TB.ID="id"+TB.ClientID;
                   TB.Width = 50;
                   TB.CssClass="DynamicTB";
                   TB
                });
      row.Cells[0].Controls.Add
                ({
                   def TBQ = TextBox(); TBQ.EnableViewState = false;
                   unless(row.Cells[0].Text == "&nbsp;")
                   {
                     TBQ.Text = cntrl;
                   }
                   TBQ.Width = 50;
                   TBQ.Visible=true;
                   TBQ.CssClass="DynamicTBG";
                   TBQ
                });
    }
    when(first) first=false;
    cntrl=ts[1];
    }
    }
  }

事件代码:

    [Web.Services.WebMethod]
public static SelectBook(values : string, valuesG : string) : string
{
    def vals = values.Split(',');
    def valsG = valuesG.Split(',');
    SQLModule.UpdateAdvCode(vals, valsG)
}

SQL 代码:

    public static UpdateAdvCode(vals : array[string], valsG : array[string]) : string
    {   
        conn.Open();
        foreach(i in [0..vals.Length-1])
            unless (vals[i]=="" || vals[i]=="&nbsp;")
            { 
                def cmd = SqlCommand("UPDATE CfgGIS SET AdvCode='"+vals[i]+"' WHERE ID_GIS="+valsG[i], conn);
                try
                {
                    _=cmd.ExecuteNonQuery();
                }
                catch
                {
                   | e is Exception => return e.ToString();
                }
            }
        conn.Close();
        "Updated"
    }

是的...我仍然需要修复添加代码 LOL

顺便说一句:这本书是个谎言,根本没有书:P 只需保存原始手册中的名称即可

最佳答案

var values = [];
$("input.DynamicTB").each(function(){
  values.push( $(this).val() ); // this is the value of each textbox 
})

values 现在是一个包含文本框所有值的数组...

关于asp.net - 获取具有相同类的文本框的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651051/

相关文章:

c# - 如何在一个解决方案中编程三个版本的 Light、Pro、Ultimate

c# - 关于代码放置的变量问题

javascript - "object.property"和 "document.getElementById().property"有什么区别

javascript - jquery将dblclick事件绑定(bind)到多个元素

javascript - 打破json jquery中的循环

javascript - 客户端与服务器端的文件名清理

c# - 为什么下载后文件类型变了?

asp.net - 使用母版页在 Aspx 页面中引用 CSS 表

javascript - Vuejs从数组中删除元素无法完全删除

javascript正则表达式验证函数