首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CheckBoxList ListItem正在保存错误的值

CheckBoxList ListItem正在保存错误的值
EN

Stack Overflow用户
提问于 2021-09-24 18:55:56
回答 2查看 69关注 0票数 3

在HTML中,当我提交表单并突破它时,我有四个复选框。我看到了被捕捉到的价值是“巴雷特的核心旋律”。当我尝试重新打开该条目时,它崩溃了,因为它与所选内容不同。我在此表单中的所有复选框都有相同的问题。

代码语言:javascript
复制
<div class="form-group row">
    <div class="col-md-12 col-md-offset-1" style="text-align: left; vertical-align: bottom; margin-top: 10px;">
        <label for="chkPreFin" style="text-decoration: underline; font-size: larger;">Pre-Finishing:</label>
        <asp:CheckBoxList ID="chkPrefin" RepeatDirection="Vertical" runat="server" TextAlign="right">
            <asp:ListItem Value="Special Handling Instructions">&nbsp;&nbsp;&nbsp;Special Handling Instructions</asp:ListItem>
            <asp:ListItem Value="Spin In Barrett">&nbsp;&nbsp;&nbsp;Spin In Barrett </asp:ListItem>
            <asp:ListItem Value="Pre-Clean In GreyMills">&nbsp;&nbsp;&nbsp;Pre-Clean In GreyMills</asp:ListItem>
            <asp:ListItem Value="Separate In Mckenzi">&nbsp;&nbsp;&nbsp;Separate In Mckenzi</asp:ListItem>
            <asp:ListItem Value="Spin Dry In Holland (No Heat)">&nbsp;&nbsp;&nbsp;Spin Dry In Holland (No Heat)</asp:ListItem>
        </asp:CheckBoxList>
    </div>
</div>

代码隐藏:

代码语言:javascript
复制
For iIndex As Integer = 0 To 4
    If chkPrefin.Items(iIndex).Selected Then
        Prefin += chkPrefin.Items(iIndex).Value.ToString() + "|"
    End If
Next
EN

回答 2

Stack Overflow用户

发布于 2021-09-24 19:27:01

您可以迭代整个集合,而不是像使用for循环那样限制它?

代码语言:javascript
复制
For Each i As ListItem In chkPrefin.Items
    If i.Selected Then
        Prefin &= i.Value.ToString() & "|"
    End If
Next

此外,请仔细检查您没有引用Text属性,并可能在上面的代码块之前将字符串设置为空字符串。Prefin = ""

票数 2
EN

Stack Overflow用户

发布于 2021-09-25 07:06:04

好的,有几件事:

当然,get +既可以使用"Value“也可以使用"Text”。

如果值来自数据库(您可能有PK id,然后是文本),这将是很常见的。

接下来,因为Value和Text是相同的吗?

然后让我们直接丢弃Value的用法。

但是,然后我们必须修复文本的缩进。

试试这个:

代码语言:javascript
复制
                <style> 
                    .lSpace Label {margin-left:15px}
                </style>

                <asp:CheckBoxList ID="chkPrefin" RepeatDirection="Vertical" 
                    runat="server" 
                     cssClass="lSpace">
                    <asp:ListItem >Special Handling Instructions</asp:ListItem>
                    <asp:ListItem >Spin In Barrett </asp:ListItem>
                    <asp:ListItem >Pre-Clean In GreyMills</asp:ListItem>
                    <asp:ListItem >Separate In Mckenzi</asp:ListItem>
                    <asp:ListItem >Spin Dry In Holland (No Heat)</asp:ListItem>
                </asp:CheckBoxList>

                <br />
                <asp:Button ID="Button1" runat="server" Text="Show selections"/>

所以,请注意我们是如何添加小样式表的-这些列表项被呈现为标签,所以我们现在可以缩进整个区域,没有杂乱的“空格”。

所以只要改变一下样式--你就可以缩进整个文本(我有15px,但是你想玩什么就玩什么。

和上面的建议代码(是的-非常好)。

代码语言:javascript
复制
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    For Each MySel As ListItem In chkPrefin.Items
        If MySel.Selected Then
            ' Debug.Print("Value of selection = " & MySel.Value) not used
            Debug.Print("Text of selection = " & MySel.Text)
        End If
    Next

End Sub

(请注意我是如何注释掉代码的值行的--我们不需要它(因为两者是相同的--但请将上面的代码放在手边--因为您可能需要这两行代码)。

所以,我们有这个:

输出:

代码语言:javascript
复制
Text of selection = Separate In Mckenzi
Text of selection = Spin Dry In Holland (No Heat)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69319917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档