2013-12-23 63 views
1

我將在GridView控件內部實現級聯DropDownList。在ASP.NET的Gridview中級聯DropdownList

頁:

<asp:GridView ID="GridView1" runat="server" Width="550px" 
    AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"> 

    <Columns> 


     <asp:TemplateField HeaderText="State"> 
      <ItemTemplate> 
       <asp:DropDownList ID="DropDownList1" 
        AutoPostBack="true" runat="server" DataTextField="State" DataValueField="StateID" onselectedindexchanged="DropDownList1_SelectedIndexChanged"> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField HeaderText="City"> 
      <ItemTemplate> 
       <asp:DropDownList ID="DropDownList2" 
        AutoPostBack="true" runat="server" DataTextField="City" DataValueField="CityId"> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 

代碼背後:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DropDownList ddl1 = e.Row.FindControl("DropDownList1") as DropDownList; 
     if (ddl1 != null) 
     { 
      using (var context = new ABCEntities()) 
      { 
       var _state= from u in context.State 
            select new 
            { 
             StateId= u.StateId, 
             State= u.State 

            }; 
       ddl1.DataSource =_state.ToList(); 
       ddl1.DataValueField = "StateId"; 
       ddl1.DataTextField = "State"; 
       ddl1.DataBind(); 
       ddl1.Items.Insert(0, new ListItem("--Select--", "0")); 

      } 

     } 
    } 
} 



protected void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    DropDownList ddl1 = (DropDownList)sender; 
    GridViewRow row = (GridViewRow)ddl1.NamingContainer; 
    if (row != null) 
    { 
     DropDownList ddl2 = (DropDownList)row.FindControl("DropDownList2"); 
     ddl2.DataSource = GetDataForSecondDropDownList(Convert.ToInt32(ddl1.SelectedValue)); 
     ddl2.DataTextField = "CityID"; 
     ddl2.DataValueField = "City"; 
     ddl2.DataBind(); 
    } 
} 

public IEnumerable<City> GetDataForSecondDropDownList(int ID)  //Getting Error 
{    
using (var context = new ABCEntities()) 
{ 
    var _city = (from u in context.Cities 
       where u.StateID == ID 
       select new City 
       { 
        CityID = u.CityID, 
        City= u.City 

       }).Distinct(); 

    return _city; 
} 

}

我收到一條錯誤信息:錯誤:訪問性不一致下面我的代碼給出:返回類型'System.Collections.Generic.IEnumerable'比方法'....... GetD更容易訪問ataForSecondDropDownList(int)'

我該怎麼做,請幫助我。提前致謝。

回答

0

該錯誤表明City類不易訪問。可能它是私人的或受保護的。確保你已經宣佈它是這樣公開的:

public class City 
{ 
    public int CityID {get;set;} 
    public string City {get;set;} 
} 
相關問題