ASP.NET 4.5에서 모델 바인딩을 테스트하고 있습니다.Gridview에서 모델 바인딩을 사용하여 같은 페이지에 Formview에서 새로 추가 된 항목을 표시하지 않음
사용자로부터 데이터를 받아들이고 성공적으로 저장 한 후에 아래 GridView에 데이터 목록을 표시하는 formview를 테스트했습니다. 데이터가 목록에 저장되면 그리드 뷰는 비어 있습니다.
ObjectDataSource를 사용하여이 예제를 시도했지만 올바르게 작동했습니다. 양식 데이터가 저장 될 때 포스트 백 이후에 List에있는 모든 항목이 격자보기에 표시됩니다.
모델 바인딩을 사용할 때 원하는 동작을 얻지 못하게하려면 어떻게해야합니까? 그렇다면 원하는 행동을 취하는 올바른 방법은 무엇입니까?
formview의 ASP.NET 마크 업 및
public partial class WebForm1 : System.Web.UI.Page
{
private static List<Person> people = new List<Person>();
public IEnumerable<Person> GetPeople()
{
return people;
}
public void SavePerson(Person person)
{
people.Add(person);
}
}
Person 클래스 뒤에 그리드보기
<asp:FormView ID="FormView1" runat="server" DefaultMode="Insert" ItemType="WebApplication35.Person" InsertMethod="SavePerson" SelectMethod="GetPeople">
<HeaderTemplate>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
</HeaderTemplate>
<InsertItemTemplate>
FirstName:
<asp:TextBox ID="FirstNameTextBox" runat="server" Text='<%# BindItem.FirstName %>' />
<br />
LastName:
<asp:TextBox ID="LastNameTextBox" runat="server" Text='<%# BindItem.LastName %>' />
<br />
Age:
<asp:TextBox ID="AgeTextBox" runat="server" Text='<%# BindItem.Age %>' />
<br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" />
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</InsertItemTemplate>
</asp:FormView>
<asp:GridView ID="GridView1" runat="server" ItemType="WebApplication35.Person" SelectMethod="GetPeople" PageSize="2">
</asp:GridView>
코드
public class Person
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public int Age { get; set; }
}
내가 viewstate가 잊어 대한 해제 viewstate가 리 바인드해야합니다. 나는 formview의 itemCreated 이벤트에서 그리드를 리바 인하기로 결정했고 완벽하게 작동합니다. – kenalex
@kenalex 리바 인드를 어떻게 완성 했습니까? 나는 같은 상황에 처해있다. – Raithlin
nm. DataBind()는 완벽하게 작동했지만, 확신 할 수 없었습니다. – Raithlin