저는 ASP.NET에서 C# 콤보를 처음 접해 보았습니다. 그래서 제 설명과 함께 명확 해 지도록 노력할 것입니다.Gridview의 셀은 RowUpdating 이벤트에서 컨트롤을 잃습니다.
GridView를 사용하여 데이터베이스에있는 일부 열과 행을 표시하고 있습니다. 이것은 훌륭하게 작동합니다. 왜냐하면 나는 이름 목록에서 동적으로 열을 추가하기를 원했기 때문이다. 5 개의 이름을 가진 목록이 있다고 가정하면 GridView에있는 모든 이름의 열을 동적으로 만듭니다.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Create columns for each student
List<Student> allStudents = new Eetlijst.Business.Students().GetAll();
allStudents.Reverse();
foreach (Student student in allStudents)
{
StudentBoundField studentField = new StudentBoundField();
studentField.HeaderText = student.Naam;
MaaltijdGrid.Columns.Insert(4, studentField);
}
ShowDataInGrid(DateTime.Now.Month, DateTime.Now.Year);
는 다른 물건있어 거기에 그것은 중요하지 않다 : 여기에 내가 무엇을 표시하는 일부 코드입니다. ShowDataInGrid는 다음과 같이 표시됩니다.
public void ShowDataInGrid(int maand, int jaar)
{
List<Maaltijd> allMaaltijden = new Eetlijst.Business.Maaltijden().GetByMonthAndYear(maand, jaar);
Session.Contents.Add("maaltijden", allMaaltijden);
MaaltijdGrid.DataSource = allMaaltijden;
MaaltijdGrid.DataBind();
}
각 행에 대해 동적 열을 어떻게 만듭니 까? DataBound 이벤트를 사용하여 생성합니다. 따라서 GridView 데이터 바인딩시 열은 데이터로 채워집니다. 또한 행이 편집 모드에 있는지 여부를 확인하는 내부가 있습니다. 따라서 행 옆에있는 편집 버튼을 클릭하면 행이 편집 모드로 완벽하게 이동합니다. 내가 만든 코드는 TextBox 컨트롤을 셀에 추가합니다. 값을 입력하고 업데이트 버튼을 누르면 더 이상 컨트롤을 찾을 수 없으므로 입력 한 값을 가져올 수 없습니다. 컨트롤은 내가 거기에 중단 점을 넣을 때 여전히 DataBound에 있습니다. 그러나 Update 버튼을 클릭하자마자 셀의 모든 컨트롤이 사라집니다.
인터넷에서 검색 한 결과, RowUpdating 메소드에 도달하기 전에 다시 게시를 실행하는 응용 프로그램과 관련이 있다는 것을 발견했습니다.
그래서 어떻게하면 편집 모드에서 셀에 추가 한 컨트롤을 사용할 수 있습니까?
누군가 DataBound 이벤트 안에있는 코드를 필요로하면 게시 할 것입니다.