표시 할 때 선택한 값을 문자열로 표시하고 DropDownList를 표시하여 지정된 값을 선택할 수 있도록 ASP.NET 3.5 GridView를 가져 오려고합니다. 편집 할 때 옵션 목록. 충분히 간단한 것 같니?Gridview 행 편집 - DropDownList에 대한 동적 바인딩
내있는 gridview이 (간체)과 같습니다되지는 편집 모드 때
<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 컨트롤을. 놀랍지도 않습니다.
양식의 OnLoad
이벤트에서 _pbxTypes
이라는 로컬 멤버에 DropDownList의 값 목록을로드합니다. 나는 이것을 확인했다. 그것은 효과적이다.
이제 도전 과제는 그리드가 특정 행에 대한 편집 모드가되면 _pbxTypes
에 저장된 PBX 목록을 바인드해야합니다. 충분히
간단하고 나는 생각했다 - 단지 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 컨트롤에 대한 읽기, 친구 묻기는 도움이되지 못했습니다.
누가 누락 된 링크를 발견 할 수 있습니까? ;-)
Tricky ....이 이벤트가 발생하지만 RowState는 "Alternate | Edit"입니다 - 귀하의 IF는 결코 사실이 아닙니다 :-) –
OK, "Edit"비트가 설정되어 있는지 확인합니다. (설정 될 수있는 다른 비트는 무시함) 이제는 매력처럼 작동합니다! 고마워요! –
그냥 코드 : – balexandre