0

我有一个很好用的函数(如下),但现在我需要隐藏“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);
}
4

1 回答 1

1

I think it will be better to add value="<%# Eval("CustomerID")%>" to checkbox.

And the use it like:

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

Or use the same name for all checkboxes:

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

In 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(',');
于 2012-06-05T16:45:01.943 回答