2012-12-07 3 views
0

간단한 문제 또는 지침을 찾기 위해 애를 썼습니다. 기본적으로 하나의 데이터 세트가 있습니다. 이 테이블은 세 개의 열,AspxGridView의 AspxComboBox

  • 문서 이름 (문자열)
  • 문서 소유자 (문자열)
  • 권한 (int)를

가 나는 AspxGridView이 DataTable에 바인딩 할 있습니다. 그러나, 나는 마지막 열이되도록 AspxComboBox에 바인딩 할 :

  • 하면 권한 = 1 다음 항목과 콤보를 결합
  • 하면 권한 = 2 다음
  • 을 항목 A의 콤보를 결합하고 B 권한 = 3이면 ComboBox를 항목 A, B 및 C와 바인딩하십시오.

어떻게하면됩니까? 내가 찾은 많은 샘플은 AspxGridView가 편집 모드에 있다고 이야기합니다. 요점은 내가 실제로 그리드를 편집하지 않는다는 것입니다. 내가하고 싶은 것은 ComboBox 변경시 포스트 백을 수행하여 작업을 수행하는 것입니다. 그리드 디스플레이 (비 편집) 모드에서

답변

1

그냥 드롭 다운리스트의 SelectedValue 속성을 통해 바인딩합니다. 샘플 아래 확인

Aspx 
<asp:GridView ID="gvTest" runat="server" AutoGenerateColumns="False" 
    onrowdatabound="gvTest_RowDataBound"> 
<Columns> 
    <asp:TemplateField HeaderText="Serial No."><ItemTemplate><%# Container.DataItemIndex+1 %></ItemTemplate></asp:TemplateField> 
    <asp:TemplateField HeaderText="Fruits" ><ItemTemplate><asp:DropDownList runat="server" ID="ddlFruits" SelectedValue='<%# Bind("FruitID") %>' > 
     <asp:ListItem Value="1">Apples</asp:ListItem> 
     <asp:ListItem Value="2">Pineapples</asp:ListItem> 
     <asp:ListItem Value="3">Banana</asp:ListItem> 
     </asp:DropDownList></ItemTemplate> </asp:TemplateField> 
</Columns> 
</asp:GridView> 

C#을

protected void Page_Load(object sender, EventArgs e) 
    { 
     gvTest.DataSource = GetData(); 
     gvTest.DataBind(); 
    } 

    private DataTable GetData() 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add(new DataColumn("FruitID")); 
     for (int i = 0; i < 3; i++) 
     { 
      DataRow dr=dt.NewRow(); 
      dr["FruitID"] = i + 1; 
      dt.Rows.Add(dr); 
     } 
     return dt; 
    } 
관련 문제