2017-11-02 20 views
0

참고 : 이것은 ASP.NET 4.5에서 ASP.NET Web Forms Model Binding이고 MVC가 아닌입니다.ASP.NET 4.5에서 기능의 모델 바인딩을 사용하여 A 드롭 다운 목록에서 미리 선택된 값을 기준으로 gridview가 필터링되지 않음

내가 ASP.NET 4.5 기능을 사용하고 DAL의 방법으로 웹 양식 (안 MVC)에서 DropDownList로하고있는 gridview 바인딩 바인딩 모델 및 filtering data with model binding and web forms

드롭 다운리스트에 설명 된대로 잘 작동하고 :

AutoPostBack="True" 

나는 다음과 같은 자바 스크립트를 사용하여 드롭 다운리스트의 초기 값을 설정하려고 :

<script> 
     function setSelectedValue(s, v) { 
      for (var i = 0; i < s.options.length; i++) { 
       if (s.options[i].text == v) { 
        s.options[i].selected = true; 
        return; 
       } 
      } 
     } 

     setSelectedIndex(document.getElementById('ddlDates'), "somevalue"); 
    </script> 

초기 값은 OK입니다.

폼이 처음로드 될 때 해당 값을 기준으로 gridview가 새로 고쳐지는 (필터링 된) 것으로 가정했지만 그런 일은 발생하지 않았습니다.

드롭 다운 목록에서 값을 선택할 때만 필터링됩니다.

WebForm을 처음로드 할 때 gridview를 자동으로 새로 고치지 못한 점은 무엇입니까?

업데이트

질문은 내가 오류가없는 Error when modifying ASP.NET DropDownList with javascript

에 비해 완전히 다른과 문제 양식의 시작에서 asp.net의 WebForm에 4.5 행동 기능을 데이터 바인딩에 관련이있다.

나는 자바 스크립트 코드를 제거하고 선언적 선언 사용 :이

DDL을 확인하다 :

 <asp:DropDownList ID="ddlDateId" runat="server" AutoPostBack="True" CssClass="form-control" 
       SelectMethod="GetMyDropDownItems" 
       SelectedValue="<%# GetDefault() %>" 
       AppendDataBoundItems="True"> 
      </asp:DropDownList> 

      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" 
       ItemType="Store.merit" 
       SelectMethod="GetMerits" 
       CssClass="table table-striped">    
      </asp:GridView> 

코드 형태로드의 시작시

 public IEnumerable<string> GetMyDropDownItems() 
      { 
       //Call DAL methods and return IEnumerable<string> 
      } 

     //note the [Control] Attribute that use the ddl ddlDateId 

     public IEnumerable<Merit> GetMerits([Control] string ddlDateId) 
      { 
       //Call DAL methods and return IEnumerable<Merit> 
      } 

뒤에를 데이터로 채워지면 기본값은 Ok입니다. 격자보기 i s empty

Datagrid가 비어있는 것은 'GetMerits'메서드에 전달 된 'ddlDateId'매개 변수가 null이지만 실제로는 값이 있음을 의미합니다. I 기본값 식 SelectedValue="<%# GetDefault() %>" 및 DDL의 첫 번째 항목을 사용하여 제거하더라도

는 그리드보기 비어

리스트에서 항목을 선택함에 항목

을 선택 (DDL) gridview 새로 고쳐지고 잘 작동합니다.

그래서 질문은 왜 Asp.net 프레임 워크가 null 값을 전달하는지 (실제로는 그렇지 않음) 그리드 뷰의 Select 메서드에서 폼의 시작 부분에 전달하는 것입니다.

+0

[자바 스크립트로 ASP.NET DropDownList를 수정할 때 오류가 발생했습니다.] (https://stackoverflow.com/questions/29995880/error-when-modifying-asp-net-dropdownlist-with- javascript) –

답변

1

백 엔드에서 수행해야합니다.DDL을 바인딩 할 백엔드에서 선택한 값을 설정하십시오. 그런 다음 gridBind(DDL.selectedvalue)pageLoad()

+0

ddl의 값은 바인딩 메소드의 매개 변수를 통해 백엔드로 전달됩니다. gridview는'SelectMethod' (데이터 소스가 사용되지 않음)를 사용하여 바인드됩니다. 루트 문제는 양식이로드 될 때 ddl에서 포스트 백이 아닙니다. –

+0

https://stackoverflow.com/questions/12173914/difference-betwwen-autopostback-true-and-autopostback-false –

+0

https://stackoverflow.com/questions/10861895/call-javascript-function-on-dropdownlist-selectedindexchanged -행사 –