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");