在程序中为什么找不到checkbox控件,代码如下
前台
<asp:DataList id="DataList1" runat="server" Width="100%">
<ItemTemplate> <table border="0" width="100%" ID="Table2">
<tr>
<td width="100%"><input type="checkbox" id="C_<%# DataBinder.Eval(Container.DataItem, "id") %>" value="<%# DataBinder.Eval(Container.DataItem, "id") %>"><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</TABLE>
</ItemTemplate>
</asp:DataList>
后台
for (int i=0;i<DataList1.Items.Count ;i++)
{
CheckBox CheckBox1= new CheckBox ();
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("C_2");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}
我找到那控件后就将他选中,请各位指点,万分感激
前台
<asp:DataList id="DataList1" runat="server" Width="100%">
<ItemTemplate> <table border="0" width="100%" ID="Table2">
<tr>
<td width="100%"><input type="checkbox" id="C_<%# DataBinder.Eval(Container.DataItem, "id") %>" value="<%# DataBinder.Eval(Container.DataItem, "id") %>"><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</TABLE>
</ItemTemplate>
</asp:DataList>
后台
for (int i=0;i<DataList1.Items.Count ;i++)
{
CheckBox CheckBox1= new CheckBox ();
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("C_2");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}
我找到那控件后就将他选中,请各位指点,万分感激
checkbox1 = ((checkbox)datalist.items[i].findcontrol("name")).text.tostring();
<asp:DataList id="DataList1" runat="server" Width="100%">
<ItemTemplate> <table border="0" width="100%" ID="Table2">
<tr>
<td width="100%"><asp:CheckBox id="CheckName" value="<%# DataBinder.Eval(Container.DataItem, "id") %>"></CheckBox><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</TABLE>
</ItemTemplate>
</asp:DataList>然后在后台:
for (int i=0;i<DataList1.Items.Count ;i++)
{
CheckBox CheckBox1= new CheckBox ();
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("CheckName");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}
{
CheckBox CheckBox1= new CheckBox ();
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("C_2");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}这段代码你是在ItemCreated事件中写的吗?
如果是,把它移到:ItemDataBound事件中试一下
<ItemTemplate> <table border="0" width="100%" ID="Table2">
<tr>
<td width="100%"><asp:CheckBox id="CheckName" value="<%# DataBinder.Eval(Container.DataItem, "id") %>"></asp:CheckBox><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</TABLE>
</ItemTemplate>
</asp:DataList>然后在后台:
for (int i=0;i<DataList1.Items.Count ;i++)
{
CheckBox CheckBox1= new CheckBox ();
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("CheckName");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}
改爲
CheckBox1 =(CheckBox)e.Items [i].FindControl("C_2");//
<asp:DataList id="DataList1" runat="server" Width="100%">
<ItemTemplate> <table border="0" width="100%" ID="Table2">
<tr>
<td width="100%"><asp:CheckBox id="CheckName" value="<%# DataBinder.Eval(Container.DataItem, "id") %>" Runat="Server"></asp:CheckBox><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</TABLE>
</ItemTemplate>
</asp:DataList>然后在后台:
for (int i=0;i<DataList1.Items.Count ;i++)
{
CheckBox CheckBox1= new CheckBox ();
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("CheckName");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}
<ItemTemplate> <table border="0" width="100%" ID="Table2">
<tr>
<td width="100%"><asp:CheckBox id="CheckName" value="<%# DataBinder.Eval(Container.DataItem, "id") %>" Runat="Server"></asp:CheckBox><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</TABLE>
</ItemTemplate>
</asp:DataList>然后在后台:
for (int i=0;i<DataList1.Items.Count ;i++)
{
CheckBox CheckBox1;
CheckBox1 =(CheckBox)DataList1.Items [i].FindControl("CheckName");//老是说checkbox未定义
if (CheckBox1 !=null)
{
hsjdata.Alert ("ok",Page);
}
else
{
hsjdata.Alert ("sorry",Page);
}
}这样就可以吧
而不是runat=server的话服务器端用findcontrol是找不到的
<tr>
<td width="100%"><INPUT id="CheckName" type="checkbox" runat="server" value=<%# DataBinder.Eval(Container.DataItem, "id") %> NAME="CheckName"><%# DataBinder.Eval(Container.DataItem, "name") %></td>
</tr>
</ItemTemplate>
我现在改成了这样,我想那个id用自已的想法生成比如CheckName_1,CheckName_2等等,请问各们前辈该怎么实现,查看客户端的源码,是<input name="DataList1:_ctl3:CheckName" id="DataList1__ctl3_CheckName" type="checkbox" value="4" />行业分类管理</td>
目前在做权限那块,如果数据库里面有其id的话,就选中,否则不选中,这些问题应该很常见的,不知道各位是如何实现的,