2012-09-12 1 views
0

ObjectDataSoure에 바인딩하는 Gridview가 있습니다.GridView (ObjectDataSource에 바인딩 됨)는 필드 대화 상자의 선택된 필드 영역에 필드를 표시하지 않습니다.

ObjectDataSource는 쿼리 결과와 함께 DataTable을 반환하는 DAL 메서드를 호출하는 비즈니스 개체를 사용합니다.

응용 프로그램 실행시, 에서 작동하지만, 설계 시간에 문제가있는 것입니다 : 나는의 GridView의 작업 마법사를 사용하는 경우 -> 열 편집 : 없음 필드가 선택한 필드의 텍스트 영역 (그래서 내가 할 수 '에서을 표시하지를 마법사를 사용하여 열을 편집하십시오).

DAL 방법 :

public override DataTable GetAllWorkers() 
    { 
     using (SqlConnection con = new SqlConnection(this.ConnectionString)) { 
      SqlCommand cmd = new SqlCommand("t_Workers_GetAllWorkers", con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      con.Open(); 
      return GetTable(cmd); 
     } 

    } 

    private DataTable GetTable(SqlCommand cmd) 
    { 

     SqlDataAdapter adp = new SqlDataAdapter(); 
     adp.SelectCommand = cmd; 
     DataTable dt = new DataTable(); 
     adp.Fill(dt); 
     return dt; 

    } 

BLL 방법 :

public static DataTable GetAllWorkers() 
    { 
     return DataProvider.Instance().GetAllWorkers(); 
    } 

ASPX 웹 페이지 :

 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
     SelectMethod="GetAllWorkers" TypeName="BLL.BizImpl"></asp:ObjectDataSource> 

    <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" 
     EnableModelValidation="True" Height="156px" Width="270px"> 
    </asp:GridView> 

누군가가 문제의 원인이 무엇인가를 설명시겠습니까?

Thanks 

답변

1

당신이 특별히 영문 페이지에 열을 선언하지 않기 때문에 당신이 마법사에서 그들을 볼 수 없을 것으로 보인다. 현재

AutoGenerateColumns 

속성이 기본값으로 설정되어 있기 때문에 GridView에 데이터가 채워집니다. 를 false로 설정하고 열을 직접 정의 할 수 있습니다. 그런 다음 사용자가 표시하려는 내용에 대해보다 많은 제어권을가집니다.

+0

답장을 보내 주셔서 감사합니다 .SqlDataSource를 사용하려고 시도했을 때 모든 열이 디자인 타임에 Selected fields 텍스트 영역에 나타납니다. 그래서 유청은 ObjectDataSoure를 사용할 때 생기지 않습니다. ASPX 파일에서 열을 수동으로 정의하는 것이 유일한 옵션입니까? – ProgNet

+0

그런 다음 SqlDataSource를 사용하지 않는 이유는 무엇입니까? – chead23

+0

정직하게 말하면 왜 그것이 다른 것과 작동하지 않는지 나는 잘 모르겠다. 나는 열을 수동으로 정의하는 것으로 시도 할 것이다. 열을 정의하지 않고 SqlDataSource에서이 작업을 수행 할 수 있었다면 형식 정보를 어디에 저장했는지, aspx에 있었는지 알았습니까? – chead23