【问题标题】:How to access gridview cell value with javascript如何使用 javascript 访问 gridview 单元格值
【发布时间】:2010-11-04 14:36:14
【问题描述】:

我有一个 javascript 函数,我正在尝试验证 gridview 的输入。我的问题是我无法获得单元格的值。这是我所拥有的:

    function fcnCheck() {
        var grid = document.getElementById("<%= GridViewProducts.ClientID %>");
        var cellPivot;

        if (grid.rows.length > 0) {
            for (i = 1; i < grid.rows.length-1; i++) {
                cellPivot = grid.rows[i].cells[0];
                cellStatus = grid.rows[i].cells[1];
                if (cellPivot == "Yes" and cellStatus == "") {
                    alert("You must select an answer for all columns if Pivot is yes")
                    return false;
                }
            }
        }
    }

这条线不起作用:cellPivot = grid.rows[i].cells[0];

【问题讨论】:

  • 为什么不使用 CustomValidator?

标签: javascript asp.net gridview


【解决方案1】:

你很可能想要(编辑)

var theDropdown = grid.rows[i].cells[0].elements[0];    
var selIndex = theDropdown.selectedIndex;
cellPivot = theDropdown.options[selIndex].value;

另一种可能更简单或更可靠的方法是以某种方式标记您想要的 cells 控件并直接选择它们?

【讨论】:

  • 抱歉忘了说它是一个下拉列表。
  • 已编辑,试试看。我仍然建议您使用 id、名称、类或其他东西标记您想要的控件,然后使用 jquery 之类的简单方法选择它们,这种构造可能会中断,并且取决于控件在单元格中的特定位置.您还可以遍历单元格中的所有内容并查找下拉列表,这样标记它会更容易。
  • 你能给我一个例子来说明如何做到这一点。我正在进行批量更新,因此每行有 3 个下拉菜单和 1 个文本框。更新工作正常,我只是无法让验证工作。
【解决方案2】:

http://aspdotnetcodebook.blogspot.com/2010/01/how-to-get-cell-value-of-gridview-using.html#comment-form

代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(document).ready(function() {
            var list = "";
            $("#btnGet").click(function() {
                $("#<%=GridView1.ClientID %> tr").each(function() {
                    //Skip first(header) row
                    if (!this.rowIndex) return;
                    var age = $(this).find("td:last").html();
                    list += age + "</br>";

                });
                $("#listAge").html(list)
            });

        });
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
    <input type="button" id="btnGet" value="Get Cell Value" />
    <div id="listAge">
    </div>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
       //Create Object of person class
        Person personObject = new Person();
        //Assign Person list to GridView
        GridView1.DataSource = personObject.GetPersonList();
        //Call Bindmethod of GridView
        GridView1.DataBind();

    }
}
public class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public List<Person> GetPersonList()
    {
        //Retrun List of Person
        List<Person> list = new List<Person>()
        {
            new Person{ID=1,Name="Person1",Age=32},
            new Person{ID=2,Name="Person2",Age=45},
            new Person{ID=3,Name="Person3",Age=43},
            new Person{ID=4,Name="Person4",Age=21},
            new Person{ID=5,Name="Person5",Age=76},
            new Person{ID=6,Name="Person6",Age=54},

        };

        return list;

    }

}

【讨论】:

    【解决方案3】:
    <script language="javascript" type="text/javascript"> 
    function Calculate() 
    <br/>
    { 
    <br/>
    var grid = document.getElementById("<%=GridID.ClientID%>");
    <br/> 
    var sum = 0; <br/>
    for (var i = 1; i < grid.rows.length; i++)<br/>
     { <br/>
    var Cell = grid.rows[i].getElementsByTagName("input"); 
    <br/>if (!Cell[4].value) {sum  += 0; } else { sum += parseFloat(Cell[4].value);} } 
    <br/>
    document.getElementById("<%=TextBox1.ClientID%>").value = sum; 
     }
    <br/>
     </script>
    ------------------------------------------------------------------------
    
    
    
    <asp:TemplateField HeaderText="Current payment" >
                                <ItemTemplate>
                                    <asp:TextBox ID="cridnvalue" runat="server" Width="70px" BorderStyle="None" onkeyup="CalculateTax();" ></asp:TextBox>
                                </ItemTemplate>
                                <ItemStyle Width="120px" />
                            </asp:TemplateField>
    

    【讨论】:

      【解决方案4】:
      //your gridview id  in my case my gridview is named dgd  and the id comes from
      // ClientID
              var myGrid = document.getElementById("<%= dgd.ClientID  %>");
              var oRows = myGrid.rows;
                  var k;
                  for (k = 1; k < oRows.length; k++)
                  {
                      var currentRow = myGrid.rows[k];
                      //now you can see the 1st,2nd and 3trd column value
                      alert(currentRow.cells[1].innerHTML);   
                      alert(currentRow.cells[2].innerHTML); 
                      alert(currentRow.cells[3].innerHTML);
                  }
      

      【讨论】:

        【解决方案5】:
        function rowWisegetcellvalueingridview() {
            ///concat string
            var str1 = "";
        
            var n = document.getElementById('hdnColumn').value;
            ///concat string 
            var grid = document.getElementById('GridView1');
            var Inputs = grid.getElementsByTagName('input');
            var Inputsa = grid.getElementsByTagName('a');
            var Inputsspan = grid.getElementsByTagName('span');
            var Input = Inputs.length;
            var j = 0;
            var p = 0;
            var r = 0;
            for (t = 0; t < grid.rows.length - 1; t++) {
                var HdnID1 = Inputs[j].value;
                var HdnID2 = Inputs[j + 1].value;
                var HdnID3 = Inputs[j + 2].value;
                var HdnID4 = Inputs[j + 3].value;
                var HdnID5 = Inputsa[p].innerHTML;
                var HdnID6 = Inputsa[p + 1].innerHTML;
                var HdnID7 = Inputsspan[r].innerHTML;
                var varConcat = "(" + HdnID1 + "," + HdnID2 + "," + HdnID3 + "," + HdnID4 + "," + HdnID5 + "," + HdnID6 + "," + HdnID7 + "),\n";
                n = n.concat(varConcat);
                j = j + 4;
                p = p + 2;
                r = r + 1;
            }
           return false;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多