ASP.NET 3.5 GridViewを取得して、選択した値を表示時に文字列として表示し、DropDownListを表示して、編集時に特定のオプションのリストから値を選択できるようにしようとしています。簡単そうですか?
私のグリッドビューは次のようになります(簡略化):
<asp:GridView ID="grvSecondaryLocations" runat="server"
DataKeyNames="ID" OnInit="grvSecondaryLocations_Init"
OnRowCommand="grvSecondaryLocations_RowCommand"
OnRowCancelingEdit="grvSecondaryLocations_RowCancelingEdit"
OnRowDeleting="grvSecondaryLocations_RowDeleting"
OnRowEditing="grvSecondaryLocations_RowEditing"
OnRowUpdating="grvSecondaryLocations_RowUpdating" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblPbxTypeCaption" runat="server"
Text='<%# Eval("PBXTypeCaptionValue") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlPBXTypeNS" runat="server"
Width="200px"
DataTextField="CaptionValue"
DataValueField="OID" />
</EditItemTemplate>
</asp:TemplateField>
</asp:GridView>
編集モードでない場合、グリッドはOKで表示されます。選択したPBXタイプは、asp:Labelコントロールにその値を表示します。そこに驚きはありません。
DropDownListの値のリストを、フォーム_pbxTypes
のOnLoad
イベントで呼び出されるローカルメンバーにロードします。私はこれを確認しました-それは機能し、値はそこにあります。
ここでの私の課題は、グリッドが特定の行の編集モードに入るときに、に格納されているPBXのリストをバインドする必要があるということ_pbxTypes
です。
非常に単純だと思いました。RowEditing
イベントのドロップダウンリストオブジェクトを取得して、リストを添付するだけです。
protected void grvSecondaryLocations_RowEditing(object sender, GridViewEditEventArgs e)
{
grvSecondaryLocations.EditIndex = e.NewEditIndex;
GridViewRow editingRow = grvSecondaryLocations.Rows[e.NewEditIndex];
DropDownList ddlPbx = (editingRow.FindControl("ddlPBXTypeNS") as DropDownList);
if (ddlPbx != null)
{
ddlPbx.DataSource = _pbxTypes;
ddlPbx.DataBind();
}
.... (more stuff)
}
FindControl
問題は、-呼び出しから何も返されません-ddlPBXTypeNS
が存在しない(または見つからない)ようです。
何が足りないの?本当にばかげたものに違いない……しかし、これまでのところ、私のグーグル、GridViewコントロールの読み上げ、仲間への質問は役に立たなかった。
誰が行方不明のリンクを見つけることができますか?;-)