Syf AK Ответов: 2

Как можно хранить и извлекать динамическую таблицу в сеансе.


I have created a dynamic table using Asp.net with c#. Now I want to store this dynamically created table in the session, How can i do that?

Thanks.


Что я уже пробовал:

public partial class WebForm1 : System.Web.UI.Page
    {
    }

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public void CreateRuntime_Table()
    {
        int tblRows = int.Parse(txtrow.Text);
        int tblCols = int.Parse(txtcol.Text);

        Table tbl = new Table();
        tbl.BorderWidth = 3;
        tbl.BorderStyle = BorderStyle.Solid;
        tbl.ID = "myTable";

        for (int i = 1; i <= tblRows; i++)
        {

            TableRow tr = new TableRow();
            for (int j = 1; j <= tblCols; j++)
            {
                TableCell tc = new TableCell();
                TextBox txtbox = new TextBox();
                txtbox.Text = "Test Row:" + i + "Test Col:" + " " + j;
                //Add the control to the table cell
                tc.Controls.Add(txtbox);
                tr.Controls.Add(tc);
            }

            tbl.Rows.Add(tr);
        }

        form1.Controls.Add(tbl);
    }

    protected void Unnamed_Click(object sender, EventArgs e)
    {
        CreateRuntime_Table();
    }

F-ES Sitecore

А вы пробовали

Сессия["MyTable"] = tbl;

Syf AK

Да я уже пробовал это но все равно не получилось

Для хранения в сеансе:
Session["table"] = tbl as Table;

Чтобы Повторить Попытку:
Таблица таблица = сессия["таблица"] как таблица;

После этого попробуйте установить colspan для той же таблицы, но таблица не идет через столб обратно:
for (int i = 1; i <= colspan; i++)
{
TableCell TC = новый TableCell();
ТС.Columnspan значение = объединение колонок;
}

2 Ответов

Рейтинг:
16

Vincent Maverick Durano

Цитата:
Я создал динамическую таблицу с помощью Asp.net с помощью c#. Теперь я хочу сохранить эту динамически созданную таблицу в сеансе, как я могу это сделать?


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

Aspx-файл:
<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <title>Dynamic Adding of Rows in ASP Table Demo</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Add New Row" />
    </form>
    </body>
</html>


С ФОНОВЫМ КОДОМ:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default1 : System.Web.UI.Page
{

    //A global variable that will hold the current number of Rows
    //We set the values to 1 so that it will generate a default Row when the page loads
    private int numOfRows = 1;

    protected void Page_Load(object sender, EventArgs e)
    {
        //Generate the Rows on Initial Load
        if (!Page.IsPostBack){
            GenerateTable(numOfRows);
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {

        if (Session["RowsCount"] != null)
        {
            numOfRows = Convert.ToInt32(Session["RowsCount"].ToString());
            GenerateTable(numOfRows);
        }
    }


    private void SetPreviousData(int rowsCount, int colsCount)
    {
        Table table = (Table)Page.FindControl("Table1");
        if (table != null)
        {
            for (int i = 0; i < rowsCount; i++)
            {
                for (int j = 0; j < colsCount; j++)
                {
                    //Extracting the Dynamic Controls from the Table
                    TextBox tb = (TextBox)table.Rows[i].Cells[j].FindControl("TextBoxRow_" + i + "Col_" + j);
                    //Use Request objects for getting the previous data of the dynamic textbox
                    tb.Text = Request.Form["TextBoxRow_" + i + "Col_" + j];
                }
            }
        }
    }

 

    private void GenerateTable(int rowsCount)
    {
        //Creat the Table and Add it to the Page

        Table table = new Table();
        table.ID = "Table1";
        Page.Form.Controls.Add(table);

        //The number of Columns to be generated
        const int colsCount = 3;//You can changed the value of 3 based on you requirements

        // Now iterate through the table and add your controls

        for (int i = 0; i < rowsCount; i++)
        {
            TableRow row = new TableRow();
            for (int j = 0; j < colsCount; j++)
            {
                TableCell cell = new TableCell();
                cell.ColumnSpan = colsCount;
                TextBox tb = new TextBox();

                // Set a unique ID for each TextBox added
                tb.ID = "TextBoxRow_" + i + "Col_" + j;
                // Add the control to the TableCell
                cell.Controls.Add(tb);

                // Add the TableCell to the TableRow
                row.Cells.Add(cell);
            }
			
            // And finally, add the TableRow to the Table
            table.Rows.Add(row);
        }


        //Set Previous Data on PostBacks
        SetPreviousData(rowsCount, colsCount);
        //Sore the current Rows Count in ViewState
        rowsCount++;

        Session["RowsCount"] = rowsCount;

    }
}


Рейтинг:
0

Simon_Whale

прочтите об этом Исследуя сессию в ASP.NET[^]