Данные текстового поля теряются после частичной отправки обратно - PullRequest
0 голосов
/ 18 марта 2011

Я использовал панель обновления, и на этой панели обновлений я сохранил элемент управления ASP Table, в котором я динамически создаю строки, которые в свою очередь содержат 1 раскрывающийся список и 3 текстовых поля.Моя проблема заключается в том, что после частичной обратной отправки текстовых полей и раскрывающегося списка, но текстовое свойство текстовых полей отображается пустым, а выбранное значение раскрывающегося списка устанавливается на первую запись в этом поле.Я также сохранил всю таблицу в сеансе и извлек ее в состоянии (! IsPostBack) при событии page_load.Пожалуйста, сообщите мне, как решить эту проблему?

часть моей страницы .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>

, а страница My .aspx.cs - как показано ниже

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);
}
}

Я хочу добавить одну строку в каждое событие нажатия addRowTbn, сохранив предыдущие строки.

1 Ответ

0 голосов
/ 18 марта 2011

Из моего первого просмотра вы пытаетесь извлечь выбранное значение выпадающего меню и текстовое значение текстового поля из таблицы, которую вы сохранили в сеансе, но вы сохранили эту таблицу в сеансе до того, как у пользователя будет возможность внести изменения в значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...