1

我在数据库中有一个表。在该表中,行数未知。我想放置复选框,但复选框的数量应该等于行数。因此我试图在while循环中做到这一点。我找到了表中存在的行数。它是rowNumber。然后,我做了一个while循环。此时,出现了串行故障。因为当我点击任何复选框时,下面的行被最后一个 m 值调用。

 cbox[m] = checkBox.new(checkX, txtY, sendRows[m], col,

因为退出 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
.
.
.
.
4

1 回答 1

0

更改 while 的内部后解决,如下所示:

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-14T13:26:24.897 回答