C# 使用复选框列表从中继器控件批量插入

C# 使用复选框列表从中继器控件批量插入,c#,.net,sql-server,webforms,batch-processing,C#,.net,Sql Server,Webforms,Batch Processing,我很欣赏任何我在这个过程中出错的洞察力。在这方面我是个新手,在这件事上我的头撞到了墙上。可能是简单的 在搜索示例之后,我使用了一个中继器,我用一个SqlDataSource填充了它,并添加了一个带有静态值的checkboxlist,当从中继器页脚单击按钮时,我试图将其插入到Sql Server DB中。对于已分配任务的用户,它应该仅从具有复选框列表值的行中插入 我得到以下错误 CS0266: Cannot implicitly convert type 'System.Web.UI.Contro

我很欣赏任何我在这个过程中出错的洞察力。在这方面我是个新手,在这件事上我的头撞到了墙上。可能是简单的

在搜索示例之后,我使用了一个中继器,我用一个
SqlDataSource
填充了它,并添加了一个带有静态值的
checkboxlist
,当从中继器页脚单击按钮时,我试图将其插入到Sql Server DB中。对于已分配任务的用户,它应该仅从具有复选框列表值的行中插入

我得到以下错误

CS0266: Cannot implicitly convert type 'System.Web.UI.Control' to 'System.Web.UI.WebControls.CheckBoxList'. An explicit conversion exists (are you missing a cast?)
如果我注释掉复选框列表上的If语句,页面将生成而不抛出错误,但是插入没有完成

我已经研究了这个错误,但是当检查if语句中的checkboxlist值以选择具有值的行时,我没有完全了解我到底做错了什么

这是我的密码:

 <asp:Repeater ID="Repeater3" runat="server" DataSourceID="TaskAssignReviewSDS">
        <FooterTemplate>
            <asp:Button ID="Button1" runat="server" Text="Add Users" />
        </FooterTemplate>
        <ItemTemplate>
            <asp:Table ID="Table1" runat="server" Width="400px">
                <asp:TableRow>
                    <asp:TableCell Width="40%">
                        <asp:HiddenField ID="UserIdHidden" runat="server" Value='<%# Bind("UserId") %>' />
                        <asp:Label ID="UserNamelbl" runat="server" Text='<%# Bind("UserName") %>'></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell Width="60%">
                            <asp:CheckBoxList ID="AssignCB" RepeatDirection="Horizontal" runat="server">
                            <asp:ListItem Value="1">Assign</asp:ListItem>
                            <asp:ListItem Value="2">Review</asp:ListItem>
                        </asp:CheckBoxList>
                    </asp:TableCell>
                </asp:TableRow>
            </asp:Table>
        </ItemTemplate>
    </asp:Repeater>

感谢您的帮助。

您需要将
AssignCB
转换为复选框列表。FindControl()只返回一个
System.Web.UI.Control

CheckBoxList cb = (CheckBoxList)ri.FindControl("AssignCB");

字符串赋值=((文本框)ri.FindControl(“AssignCB”).Text;如果有问题,请将其改为引用复选框,这样可能会导致下一个错误。我还假设
if(cb.value!=null)
可能只是
if(cb!=null)
。同样,这可能无法解决您的问题,但它们是一些需要考虑的问题。如果有帮助,请更新您的代码,以便我们可以帮助您解决更多问题…尝试使用单选按钮而不是复选框。在与SqlConnection相同的代码中看到“Button1_Click”会让我大吃一惊。
GranadCoder
,您能给他一个替代解决方案吗?
CheckBoxList cb = (CheckBoxList)ri.FindControl("AssignCB");