2011-12-13 51 views
0

我需要处理从数据列表中选择,但是循环遍历数据列表中项目的forech循环不起作用。基本上,如果复选框被选中,我想获取chekc box的工具提示中的电子邮件地址。数据统计量为零。有人可以帮我弄这个吗?在数据列表中循环失败

<ajaxToolkit:Accordion ID="Accordion1" runat="server" selectedIndex="0" FadeTransitions="true" FramesPerSecond="40" TransitionDuration="250" SuppressHeaderPostbacks="true" HeaderCssClass="Header"> 
      <Panes> 
       <ajaxToolkit:AccordionPane ID="AccordionPane1" runat="server"> 
        <Header> 
          <asp:LinkButton ID="lbtnSM" runat="server" Width="207px" Text="Users" Font-Bold="true" CssClass="GeneralText" /><br /><br /> 
        </Header> 
        <Content> 
         <div class="emailleftcolumm"> 
          <asp:DataList ID="dlSM" runat="server" DataKeyField="ID" OnItemCommand="dlSM_ItemCommand" 
           EnableViewState="false" Width="207px" OnItemDataBound="dlSM_ItemDataBound"> 
           <HeaderStyle BorderWidth="1" BorderStyle="Inset" Font-Bold="true" /> 
           <HeaderTemplate> 
            Select All <asp:CheckBox ID="chkSelectAll" runat="server" /> 
           </HeaderTemplate> 
           <ItemTemplate> 
            <asp:CheckBox ID="chkSelector" runat="server" Text='<%# Eval("firstname") + " " + Eval("lastname") + ", " + Eval("acronym") %>' 
             CssClass="GeneralText" ToolTip='<%# Eval("email") + ";" + Eval("altemail") %>'/>         </ItemTemplate> 
           <AlternatingItemTemplate> 
            <div id="altbgcolor"> 
             <asp:CheckBox ID="chkSelector" runat="server" Text='<%# Eval("firstname") + " " + Eval("lastname") + ", " + Eval("acronym") %>' 
              ToolTip='<%# Eval("email") + ";" + Eval("altemail") %>' CssClass="GeneralText" />          </div> 
           </AlternatingItemTemplate> 
          </asp:DataList> 
         </div> 
        </Content> 
       </ajaxToolkit:AccordionPane> 

按钮单击事件处理程序是这样的:

protected void btnSend_Click(object sender, EventArgs e) 
    { 
     string _mailto = string.Empty; 
     string _subject = txtSubject.Text; 
     string _message = txtMessage.Text; 

     DataList DataList1 = (DataList)FindControl("DataList1"); 
     foreach (DataListItem item in DataList1.Items) 
     { 
      CheckBox chkSelector = (CheckBox)item.FindControl("chkSelector"); 
      if (chkSelector.Checked) 
      { 
       _mailto += chkSelector.ToolTip + ";"; 
      } 
     } 

     // do mail call 

     // Clean up 
     lblEmailConfirm.Font.Bold = true; 
     lblEmailConfirm.Text = "Subject: " + _subject + " Message: " + _message; 
     txtSubject.Text = string.Empty; 
     txtMessage.Text = string.Empty; 
    } 
+2

你应该启用视图状态 – 2011-12-13 22:08:44

+0

你DataList的ID是`dlSM`而不是`DataList1`。 'btnSend'在哪里?为什么用FindControl为DataList进行筛选? – 2011-12-13 22:14:15

+0

@Tim:我纠正了这个ID,但没用。 btnSend位于手风琴之外,是点击发送电子邮件的表单的一部分。它火了,没有问题。自发布以来,我做了以下事情:DataList dlSM =(DataList)Master.FindControl(“ContentPlaceHolder1”)。FindControl(“Accordion1”)。FindControl(“AccordionPane1”)。FindControl(“dlSM”);.流程进入foreach,但在第一次迭代时退出。 – Risho 2011-12-13 22:21:25

回答

0

你有

DataList DataList1 = (DataList)FindControl("DataList1"); 

这可能是应该根据你提供了什么

DataList DataList1 = (DataList)FindControl("dlSM"); 

是。我现在没有看到DataList1的控件。

1

将viewstate设置为true取得了诀窍 - 谁是新手? (以及Adrian做的......)