我有一个功能(下面)工作得很好但现在我需要隐藏列'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);
}
答案 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(',');