复选框列表

时间:2011-01-10 15:00:28

标签: asp.net vb.net

祝大家新年快乐。我是VB.NET和ASP.NET的新手。这是我的问题:

我从DB中检索记录列表,对于每一行,我需要显示4个复选框。我可以为每一行使用一个checkboxlist,但是如何在提交后处理结果并不是很清楚。

我有一些对象和一些可用于该对象的操作。从数据库中我提取了一个包含所有操作的对象列表。对于每个操作,我想显示一个复选框以启用或禁用该操作。结果是这样的:

OBJ1 - url - [] [x] []

OBJ2 - url - [] [x] [x]

在url上我使用从DB检索到的ID创建的另一个页面的href。要创建我使用此代码:

<td class="column-filename">
    <strong>
        <asp:Label runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "GroupName")%>'></asp:Label>
    </strong>                    
</td>    
<td align="left">
    <span style="vertical-align:middle">
    <asp:CheckBoxList runat="server" ID="operations" RepeatDirection="Horizontal" RepeatLayout="Table">
        <asp:ListItem Text="View"></asp:ListItem>
        <asp:ListItem Text="Upload"></asp:ListItem>
        <asp:ListItem Text="Move"></asp:ListItem>
        <asp:ListItem Text="Delete"></asp:ListItem>
        <asp:ListItem Text="Rename"></asp:ListItem>
        <asp:ListItem Text="Replace"></asp:ListItem>
    </asp:CheckBoxList>
    </span>
</td>
</asp>
            </asp>

我的问题是:如何解析所有复选框?

你能帮我或给我一个链接或任何其他资源来解决我的问题吗?

非常感谢! 安德烈

4 个答案:

答案 0 :(得分:0)

查看DataGrid类 - 您可以对其进行数据绑定并将列设置为复选框列。

这是一个非常重的控件(特别是ViewState),因此您可能希望用更多控件(以及更多实现工作)替换更轻量级的内容,例如Repeater。< / p>

在任何一种情况下,您都可以访问不同回发事件中的值。

答案 1 :(得分:0)

要过滤CheckboxList中的复选框,您可以参考以下链接: http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist%28v=vs.80%29.aspx

答案 2 :(得分:0)

如果需要在数据库中显示每条记录,可以使用GridView控件。使用记录列创建网格。然后将GridTemplateField添加到控件,并添加您的Checkboxlist。使用数据源控件绑定您的checkboxlist;否则,你必须在RowDataBound中绑定,并且也在那里选择项目(在两种情况下)。用户可以批量制作和保存更改,您可以通过以下方式检索值:

foreach (GridViewRow row in this.rg.Rows)
{
    if (row.RowType == DataControlRowType.DataRow)
    {
        var list = (CheckBoxList)row.Cells[<index>].FindControl("chk");
        //Get checked items, save to DB
    }

}

答案 3 :(得分:0)

现在它运作正常。这是我的解决方案(我在这里发布,因为我很确定下个月我会遇到同样的问题....)

    <asp:DataGrid ID="GroupList" Runat="server" CssClass="widefat"
           AutoGenerateColumns="False"
           BorderColor="#999999" 
           BorderStyle="None" 
           BorderWidth="1px" 
           BackColor="White" 
           CellPadding="3" 
           GridLines="Vertical">
        <Columns>          
            <asp:BoundColumn HeaderText="Status" DataField="GroupName" />
            <asp:BoundColumn HeaderText="Status" DataField="GroupActive" />
            <asp:BoundColumn HeaderText="Status" DataField="GroupID" 
                    Visible="false" />
            <asp:TemplateColumn HeaderText="Users"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:HyperLink runat="server"  
                    NavigateUrl="User_manager.aspx" > 
                    <asp:Image runat="server"  
                    ImageUrl="~/images/folders/users.png"  
                    Width="24" /></asp:HyperLink>
                </ItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="View"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="chkView" Runat="server"  
                    Checked='<%# Eval("View").ToString().Equals("1")%>' />
                </ItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="Upload"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="chkUpload" Runat="server"  
                    Checked='<%# Eval("Upload").ToString().Equals("1")%>'/>
                </ItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="Delete"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="chkDelete" Runat="server"  
                    Checked='<%# Eval("Delete").ToString().Equals("1")%>' />
                </ItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="Move"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="chkMove" Runat="server"  
                    Checked='<%# Eval("Move").ToString().Equals("1")%>' />
                </ItemTemplate>
            </asp:TemplateColumn>
            <asp:TemplateColumn HeaderText="Rename"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="chkRename" Runat="server"  
                    Checked='<%# Eval("Rename").ToString().Equals("1")%>' />
                </ItemTemplate>
            </asp:TemplateColumn>   
            <asp:TemplateColumn HeaderText="Replace"  
                    ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:CheckBox ID="chkReplace" Runat="server"  
                    Checked='<%# Eval("Replace").ToString().Equals("1")%>' />
                </ItemTemplate>
            </asp:TemplateColumn>
        </Columns>
        <AlternatingItemStyle BackColor="#f9f9f9" />
        <ItemStyle ForeColor="Black" BackColor="#EEEEEE" BorderStyle="Solid"  
                    BorderColor="#dfdfdf" BorderWidth="1px" />
        <headerStyle Font-Bold="True" ForeColor="Black" BackColor="#dfdfdf"  
                    HorizontalAlign="Center" />
    </asp:DataGrid>

并在提交后解析结果:

        For intRow = 0 To intRows

            GridItem = GroupList.Items(intRow)            
            groupID = GridItem.Cells(2).Text().Trim()

            If (DirectCast(GridItem.FindControl("chkView"), 
                    CheckBox).Checked) Then
                db.insertGroupOperation(repository_selected, 
                    groupID, op_view)
            End If
            [..]
        Next

谢谢大家的帮助!

再见, 安德烈