0

私は素晴らしい機能をする関数(以下)を持っていますが、var CustomerID = grid.rows [i] .cells[1].innerText;の値を与える列'CustomerID'を非表示にする必要があります。この列を非表示にすると、関数は正常に機能しなくなりますが、間違った値を取得しています。誰かがこれを手伝うことができますか?

隠しフィールドはこんな感じ…

<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

チェックボックスに追加したほうがいいと思い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(',');
于 2012-06-05T16:45:01.943 に答える