2011-02-15 2 views
0

나는 하나의 열 (질의 --- 데이터베이스를 얻음)과 다른 가능한 드롭 다운리스트 (옵션) 만 표시하고자하는 템플릿 화 된 Gridview를 가지고있다. 드롭 다운 목록의 값은 질문의 유형에 따라 다릅니다. T/F 또는 원거리 (Lo, Med, High)의 두 가지 유형 만 있습니다. 질문이 유형 1 인 경우 드롭 다운 목록에 T/F 만 표시됩니다. 유형 II 인 경우도 마찬가지입니다. 내가 사용하여 LoadDropdownList는(), 그것은 목록을 채우는 것이라고 기대했다Webform Gridview에서 드롭 다운 목록을 어떻게 동적으로로드합니까?

<asp:GridView AutoGenerateColumns="false" runat="server" ID="SurveyView"> 
    <Columns> 

     <asp:BoundField HeaderText="Questionnaire" DataField="Questionaire" ReadOnly="true"/> 
     <asp:BoundField HeaderText="QuestionID" DataField="Id" ReadOnly="true" Visible="false" /> 
     <asp:BoundField HeaderText="IsBoolean" DataField="Filter" ReadOnly="true" Visible="false" /> 
     <asp:TemplateField HeaderText="Response"> 
      <ItemTemplate> 
       <asp:DropDownList ID="UserDropDown" runat="server" AppendDataBoundItems="true" DataSource="LoadDropdownList(Filter)" DataTextField="key" DataValueField="value"></asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 


     public Dictionary<String, String> GenerateDropdownList(bool BooleanFilterStatus) 
    { 
     Dictionary<String, String> tempStores = new Dictionary<string, string>() ; 
     if (BooleanFilterStatus) 
     { 
      tempStores.Add(Boolean.TrueString, Boolean.TrueString); 
      tempStores.Add(Boolean.FalseString, Boolean.FalseString); 
     } 
     else 
     { 
      tempStores.Add("NONE", "NIL"); 
      tempStores.Add("Lo", "Low"); 
      tempStores.Add("Medium", "Medium"); 
      tempStores.Add("High", "High"); 
     } 

     return tempStores; 
    } 

아래 표시됨

이있는 gridview와 (아마도) 드롭 다운리스트를로드하는 방법입니다. 하지만 그건 효과가없는 것처럼 보입니다.

모든 아이디어 또는 다른 가능한 해결책을 주시면 감사하겠습니다.

답변

2

어떻게

<asp:DropDownList ID="UserDropDown" runat="server" AppendDataBoundItems="true" 
ondatabinding="DropDownList1_DataBinding" DataTextField="key" DataValueField="value"></asp:DropDownList> 

같은 약 및 코드 숨김

protected void DropDownList1_DataBinding(object sender, EventArgs e) 
    { 
     var ddl = sender as DropDownList; 
     if(ddl!=null) 
     { 
      //populate list. 
      ddl.Items.Add(new ListItem("test")); 
     } 
    } 
+0

쿨있다. 제안 해 주셔서 감사 드리며이를 시도해 보겠습니다. – yungun

+0

남자에게 몇 가지 포인트를 잊지 마세요! – Fandango68

+0

그러나 초기에 선택한 값을 그리드 행의 값으로 설정하는 방법은 무엇입니까? – drzaus

관련 문제