データリストの選択を処理する必要がありますが、データリストのアイテムをループしているforechループは機能しません。基本的にチェックボックスがチェックされていれば、Chekcボックスのツールチップにある電子メールアドレスを取得したいと思います。データリストの数はゼロです。誰かがこれで私を助けることができますか?データリストのルーピングが失敗します
<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;
}
あなたはviewstateを有効にしてください –
あなたのDataListのIDは 'DataList1'ではなく' dlSM'です。 'btnSend'はどこですか?なぜあなたはFindControlでDataListのためにserachingですか? –
@Tim:IDは修正しましたが、使用しません。 btnSendはアコーディオンの外にあり、電子メールを送信するためにクリックするフォームの一部です。それは発生し、問題はありません。これを投稿して以来、私は次のことをしました:DataList dlSM =(DataList)Master.FindControl( "ContentPlaceHolder1")。FindControl( "Accordion1")。FindControl( "AccordionPane1")。FindControl( "dlSM");フローはforeachに入りますが、最初の反復で終了します。 – Risho