我该如何在循环中使用从数据库中获取的复选框值?

我在数据库中有一个表格,其中行数是未知的。我想加入复选框,但是复选框的数量应该等于行数。所以我试着使用 while 循环来解决。我首先找到了表格中存在的行数,这被称为 rowNumber。然后我进行了 while 循环。但是此时出现了一个连锁错误。因为当我点击任何一个复选框时,下面的行都会调用最后一个 m 值。

因为在退出 while 循环后,m 等于 rowNumber。当点击任何复选框时,它不知道点击了哪一行,因为 m = rowNumber。我尝试了很多方法都无法解决问题。我应该怎么办?应该放弃使用循环吗?如果我放弃使用循环,我该如何做?

以下是无法修复的代码:

local m = 1
while(m<rowNumber)

cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,
    function(this)
        local state = this:getCheck()
        if state then
            print(m .. " checked")
            gonder[m] = 1
        else
            print(m  .. " does not checked")
            gonder[m] = 0
        end
    end
)
screen:addChild(cbox[m])
cbox[m]:setCheck(settings.getMusicState())
txtY = txtY + gap
print ("gonder[m] = " .. gonder[m])
end

如果代码写成以下内容,则可以正确运行:

cbox[1] = checkBox.new(checkX, txtY, sendRows[1], col,
    function(this)
        local state = this:getCheck()
        if state then
            print(1.. " checked")
            gonder[1] = 1
        else
            print(1  .. " does not checked")
            gonder[1] = 0
        end
    end
)
screen:addChild(cbox[1])
cbox[1]:setCheck(settings.getMusicState())
txtY = txtY + gap

cbox[2] = checkBox.new(checkX, txtY, sendRows[2], col,
    function(this)
        local state = this:getCheck()
        if state then
            print(2.. " checked")
            gonder[2] = 1
        else
            print(2  .. " does not checked")
            gonder[2] = 0
        end
    end
)
screen:addChild(cbox[2])
cbox[2]:setCheck(settings.getMusicState())
txtY = txtY + gap
.
.
.
.
点赞
用户1308990
用户1308990

将内部更改为以下内容后,问题得到解决:

while(m < rowNumber + 1) do
    cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,
        function(this)
        end
    )
    screen:addChild(cbox[m])
    txtY = txtY + gap
    m = m + 1
end

而这里的关键点在于,我们发送我们想要的内容:

submitt:addEventListener("click",
    function()
        local mydata={}
        local i=1
        while (i<rowNumber+1) do
            mydata[3*i-2]=cbox[i].checked--1. Holds whether it is true or false
            mydata[3*i-1]=sendRows2[i]
            mydata[3*i] = sendURL[i]
            i=i+1
        end
        sceneManager:changeScene("results", 1, SceneManager.flipWithFade, easing.outBack,mydata)
        stage:removeChild(submitt)--after clicked , the button disappears
    end)
2012-09-14 13:26:24