2011-03-18 2 views
0

업데이트 패널을 사용하고 해당 업데이트 패널에서 동적으로 행을 만드는 ASP 테이블 컨트롤을 유지합니다. 드롭 다운 목록과 3 개의 텍스트 상자가 차례로 있습니다. 내 문제는 부분 포스트 백 텍스트 상자 및 드롭 다운 목록을 찾은 후 텍스트 상자의 텍스트 속성이 비어있는 것을 나타내고 드롭 다운 목록의 선택된 값이 해당 상자의 첫 번째 레코드로 설정된 경우입니다. 또한 세션 전체 테이블을 저장하고 page_load 이벤트에서 (! isPostBack) 조건을 검색합니다. 이 문제를 해결하는 방법을 알려주십시오. 내 .aspx 페이지의텍스트 부분의 데이터가 손실되었습니다. 부분 게시 후

부분은

<td colspan="2"> 
       <asp:ScriptManager ID="ScriptManager1" runat="server"> 
       </asp:ScriptManager> 
       <asp:UpdatePanel ID="UpdatePanel1" runat="server" EnableViewState="true"> 
       <ContentTemplate> 
        <table class="style1"> 
        <tr> 
        <td> 
         <table class="style1" border="1"> 
         <tr> 
          <td width="120"> 
           <asp:Label ID="QualificationLbl" runat="server" Text="Qualification"></asp:Label>           </td> 
              <td width="100"> 
               <asp:Label ID="PercentageLbl" runat="server" Text="Percentage"></asp:Label> 
              </td> 
              <td width="100"> 
               <asp:Label ID="YearLbl" runat="server" Text="Passing Year"></asp:Label> 
              </td> 
              <td width="*"> 
               <asp:Label ID="InstituteLbl" runat="server" Text="Institute Name" Width="120px" 
                onprerender="InstituteLbl_PreRender"></asp:Label> 
              </td> 
             </tr> 
             <tr> 
              <td colspan="4" align="left"> 
               <asp:PlaceHolder ID="PlaceHolder" runat="server"></asp:PlaceHolder> 
               <asp:Table ID="Table1" runat="server"> 
               </asp:Table> 
              </td> 
             </tr> 
            </table> 
           </td> 
          </tr> 
          <tr> 
           <td align="right"> 
            <asp:Button ID="addRowBtn" runat="server" onclick="addRowBtn_Click" 
             Text="Add New Row" /> 
           </td> 
          </tr> 
         </table> 
        </ContentTemplate> 
        <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="addRowBtn" EventName="Click" /> 
        </Triggers> 

      </asp:UpdatePanel> 
      <br /> 
    </td> 

아래로하고 내 .aspx.cs 페이지 내가 거기 모든 addRowTbn 클릭 이벤트에 하나 개의 행을 추가 할

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 
using AppResumeMaster; 
using AppQualificationDetail; 


public partial class Applicant_ApplicationForm : System.Web.UI.Page 
{ 
    int Rows = 1; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    if (!IsPostBack) 
    { 
     generateTable(Rows); 
    } 
    else 
    { 
     Table ReturnedTable = new Table(); 
     ReturnedTable = (Table)Session["Table"]; 
     int rowCount = ReturnedTable.Rows.Count; 
     int colCount = 4; 

     DropDownList objList = new DropDownList(); 
     TextBox txtBox = new TextBox(); 
     if (ReturnedTable != null) 
     { 
      for (int Rcount = 0; Rcount < rowCount; Rcount++) 
      { 
       for (int Ccount = 0; Ccount < colCount; Ccount++) 
       { 
        if (Ccount == 0) 
        { 
         objList = (DropDownList)ReturnedTable.Rows[Rcount].Cells[Ccount].FindControl("DropDownList(" + Rcount + "," + Ccount + ")"); 
         objList.SelectedValue = ((DropDownList)ReturnedTable.Rows[Rcount].Cells[Ccount].FindControl("DropDownList(" + Rcount + "," + Ccount + ")")).SelectedValue; 
        } 
        else 
        { 
         txtBox = (TextBox)ReturnedTable.Rows[Rcount].Cells[Ccount].FindControl("TextBox(" + Rcount + "," + Ccount + ")"); 
         txtBox.Text = ((TextBox)ReturnedTable.Rows[Rcount].Cells[Ccount].FindControl("TextBox(" + Rcount + "," + Ccount + ")")).Text; 
         //txtBox.Text = Request.Params["TextBox(" + Rcount + "," + Ccount + ")"]; 
        } 
       } 
      } 

     } 
    } 

} 
protected void saveBtn_Click(object sender, EventArgs e) 
{ 
} 
protected void addRowBtn_Click(object sender, EventArgs e) 
{ 

    if (ViewState["rowCount"] != null) 
    { 
     Rows = Convert.ToInt32(ViewState["rowCount"].ToString()); 
     generateTable(Rows); 
    } 

} 
public void generateTable(int rowCount) 
{ 
    try 
    { 
     int colCount = 4; 
     DropDownList objDropDownList; 
     for (int Row = 0; Row < rowCount; Row++) 
     { 
      TableRow objTablerow = new TableRow(); 

      for (int cols = 0; cols < colCount; cols++) 
      { 
       TableCell objTableCell = new TableCell(); 
       if (cols == 0) 
       { 
        objDropDownList = new DropDownList(); 
        objDropDownList.Width = 120; 
        objTableCell.Controls.Add(objDropDownList); 

        DataOperation objDataoperation = new DataOperation(); 
        DataSet ds = new DataSet(); 
        ds = objDataoperation.DropDownList("select * from tblQualificationMaster"); 

        objDropDownList.DataValueField = ds.Tables[0].Columns[0].ToString(); 
        objDropDownList.DataTextField = ds.Tables[0].Columns[1].ToString(); 
        objDropDownList.DataSource = ds.Tables[0]; 
        objDropDownList.DataBind(); 

        objDropDownList.ID = "DropDownList(" + Row + "," + cols + ")"; 
        objTableCell.Controls.Add(objDropDownList); 
        objTablerow.Controls.Add(objTableCell); 
       } 
       else 
       { 
        TextBox objTextBox = new TextBox(); 
        objTextBox.ID = "TextBox(" + Row + "," + cols + ")"; 
        objTableCell.Controls.Add(objTextBox); 
        objTablerow.Controls.Add(objTableCell); 
       } 
      } 

      Table1.Rows.Add(objTablerow); 

     } 
     rowCount++; 
     ViewState["rowCount"] = rowCount; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 
protected void InstituteLbl_PreRender(object sender, EventArgs e) 
{ 
    Session.Add("Table", Table1); 
} 
} 

다음과 같다 이전 행 유지.

답변

0

내 처음부터 세션에 저장된 테이블에서 선택한 값과 텍스트 상자의 텍스트 값을 가져 오려고했지만 사용자가 변경하기 전에 해당 테이블을 세션에 저장했습니다 값에.

+0

답장을 보내 주신 Zach에게 감사 드려요.하지만 당신이하고 싶은 말을 이해할 수 없습니다. 이 문제를 어떻게 해결할 수 있는지 안내해주세요 ... –

관련 문제