2011-02-27 5 views
3

체크 상자 열, 드롭 다운 열 및 텍스트 상자가있는 격자보기를 바인딩해야합니다. 그것은 기본 모드처럼 편집입니다. 콤보 상자 항목을 코드 뒤에 바인딩하는 것을 도와주세요. 콤보 상자 값은 웹 서비스에서 가져와야합니다. 모든 격자 데이터는 코드 배후에서 바인딩됩니다. 사용자가 그리드의 데이터를 변경할 수 있습니다.Gridview 코드 뒤에서 DropDownList를 바인딩

protected void Page_Load(object sender, EventArgs e) 
{ 

    DataTable table = new DataTable(); 
    table.Columns.Add("select", typeof(bool)); 
    table.Columns.Add("Roles", typeof(string)); 
    table.Columns.Add("Name", typeof(string)); 
    table.Rows.Add(true, "Admin", "name1"); 
    table.Rows.Add(true, "Admin", "name2"); 
    table.Rows.Add(true, "user", "name3"); 
    table.Rows.Add(false, "user", "name4"); 
    table.Rows.Add(false, "Admin", "name5"); 
    GridView1.DataSource = table; 
    GridView1.DataBind(); 

} 

답변

3

뒤에

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
     <Columns> 
     <asp:TemplateField > 
       <ItemTemplate > 
        <asp:CheckBox ID="CheckBox1" runat="server" Checked= "<%# Bind('select') %>" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Roles"> 
       <ItemTemplate> 
        <asp:DropDownList ID="DropDownList1" runat="server" 
         SelectedValue='<%# Eval("Roles") %>'> 
        </asp:DropDownList> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Name"> 
       <ItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text="<%# Bind('Name') %>"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

코드는 당신이 뭔가를 시도 할 수 있습니다.

<asp:DropDownList ID="DropDownList1" runat="server" 
OnDataBound="DropDownList_OnDataBound"></asp:DropDownList> 

protected void DropDownList_OnDataBound(object sender, EventArgs e) 

{ 
    DropDownList ddl = sender as DropDownList; 
    if(ddl != null) 
    { 
     // call web service and 
     // populate ddl.Items 
    } 
} 
관련 문제