FormViewがあり、その中にあるDivやその他のコントロールにアクセスする必要があります。私のapsxコードは次のようになります。
<asp:FormView ID="Edit_FV" runat="server" DataKeyNames="IDproceso" DefaultMode="Edit" DataSourceID="SqlDS_Procesos">
<EditItemTemplate>
<div id="second_info" runat="server">
<div id="second_info_left" runat="server">
<div id="alcance" class="report_field" runat="server">
<p class="container-title">
Alcance:</p>
<asp:TextBox ID="TextBox14" runat="server" TextMode="multiline" Width="400px" Height="120px" Text='<%# Bind("alcance") %>' />
</div>
</div>
<div id="second_info_right" runat="server">
<div class="valores-container" id="tipo_ahorro" runat="server">
<asp:CheckBox ID="ahorro_state" runat="server" Checked='<%# Bind("tipo_ahorro") %>' />
</div>
</div>
</EditItemTemplate>
</asp:FormView>
ここで、withにアクセスしたい場合は、CheckBox
withid = ahorro_state
を試してEdit_FV.FindControl("ahorro_state")
、Null参照を取得しました。Edit_FV.FindControl("MainContent_Edit_FV_ahorro_state")
これが最終的なHTMLドキュメントで実際にIDに名前が付けられる方法であるため、私も試してみましたが、Null参照も取得しました。second_info
いずれかのdiv(ID 、など)にアクセスしようとしたときにも同じことが起こりtipo_ahorro
ました。ばかげた間違いをしているように感じますが、少し周りを見回して、見つけて答えることができませんでした。
これを解決する方法はありますか?
編集:FindControlを呼び出しているコードを追加しました。
Page_Load()からDataBind()を呼び出してみました。
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
if (Edit_FV.CurrentMode == FormViewMode.Edit)
{
Control c = Edit_FV.FindControl("ahorro_state");//c is null here.
}
}
また、Edit_FVのOnDataBound属性を設定してみました。OnDataBound="onBound"
protected void onBound(object sender, EventArgs e)
{
if (Edit_FV.CurrentMode == FormViewMode.Edit)
{
ControlCollection a = Edit_FV.Controls;
Control c = Edit_FV.FindControl("ahorro_state");//c is null here
}
}