使用javascript获取gridview中隐藏列的值

时间:2012-06-05 16:35:52

标签: javascript asp.net

我有一个功能(下面)工作得很好但现在我需要隐藏列'CustomerID',它给我var的值CustomerID = grid.rows [i] .cells [1] .innerText;如果我隐藏这个列,该函数不再有效,它可以工作,但它抓取错误的值。任何人都可以帮忙吗?

隐藏字段看起来像这样......

<asp:TemplateField>
  <ItemTemplate>
    <asp:Label id="lblCustomerId" runat ="server" text='<%# Eval("CustomerID")%>'/>
  </ItemTemplate>
</asp:TemplateField>

功能:

function mapSelectedClick() 
{
    var customerIDs = "";
    var grid = document.getElementById('<%=grdCustomers.ClientID %>');
    var count = 0;

    for (var i = 1; i < grid.rows.length; i++)
    {
        var cell = grid.rows[i].cells[0];

        var CustomerID = grid.rows[i].cells[1].innerText;
        for (var j = 0; j < cell.childNodes.length; j++)
        {
            if (cell.childNodes[j].type == "checkbox")
            {
                if (cell.childNodes[j].checked)
                {
                    customerIDs += CustomerID.toString() + ',';
                    count++;
                }
            }
        }
    }

    if (count == 0)
    {
        alert("Please select at least one customer to map.");
        return false;
    }

    customerIDs = customerIDs.substring(0, customerIDs.length-1);
    window.open("MapCustomers.aspx?CustomerIDs=" + customerIDs);
}

1 个答案:

答案 0 :(得分:1)

我认为最好将value="<%# Eval("CustomerID")%>"添加到复选框。

使用它:

if (cell.childNodes[j].type == "checkbox")
{
    if (cell.childNodes[j].checked)
    {
        customerIDs += cell.childNodes[j].value.toString() + ',';
        count++;
    }
}

或者对所有复选框使用相同的名称:

<input type="checkbox" name="CheckedCustomers" value="1" />
<input type="checkbox" name="CheckedCustomers" value="3" />

在js:

var checkedCustomers = document.getElementsByName("CheckedCustomers");
var customerIds = [];
for (var i = 0; i < checkedCustomers.lenght; i++)
{
    if(checkedCustomers[i].type === 'checkbox' && checkedCustomers[i].checked)
        customerIds.push(checkedCustomers[i].value);
}
var result = customerIds.join(',');
相关问题