Datatable -> Gridview сохраняется после обратной передачи при добавлении строк - PullRequest
1 голос
/ 30 июля 2011

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

Как я могу сохранить данные в состоянии View и добавить к нему, связать, а затем сохранить снова, чтобы я мог продолжать добавлять строки в gridView? Я вообще не знаком с состоянием просмотра; Я только знаю, что это то, что я хочу от поиска в Google.

    <asp:DropDownList ID="DDLFirstColumn" runat="server" Style="z-index: 1; left: 11px;
    top: 171px; position: absolute; height: 16px; width: 104px">
    <asp:ListItem>Selection 1</asp:ListItem>
    <asp:ListItem>Selection 2</asp:ListItem>
    <asp:ListItem>Selection 3</asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="txtSecondColumn" runat="server" style="z-index: 1; left: 127px; top: 169px; position: absolute; height: 22px; width: 56px"></asp:TextBox>
<asp:DropDownList ID="DDLThirdColumn" runat="server" Style="z-index: 1; left: 200px; top: 171px;
    position: absolute">
    <asp:ListItem>Selection 1</asp:ListItem>
    <asp:ListItem>Selection 2</asp:ListItem>
    <asp:ListItem>Selection 3</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btn_Add" runat="server" Style="z-index: 1; left: 345px; top: 167px;
    position: absolute" Text="Add" OnClick="btn_Add_Click" />
<asp:GridView ID="GridView1" runat="server" Style="z-index: 1; left: 14px; top: 219px;
    position: absolute; width: 400px">
</asp:GridView>

using System;
using System.Data;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btn_Add_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Column 1", Type.GetType("System.String"));
        dt.Columns.Add("Column 2", Type.GetType("System.String"));
        dt.Columns.Add("Column 3", Type.GetType("System.String"));

        dt.Columns[0].DefaultValue = DDLFirstColumn.SelectedValue;
        dt.Columns[1].DefaultValue = txtSecondColumn.Text;
        dt.Columns[2].DefaultValue = DDLThirdColumn.SelectedValue;

        dt.Rows.Add();

        GridView1.DataSource = dt;

        GridView1.DataBind();

    }
}

1 Ответ

0 голосов
/ 30 июля 2011

Вы можете хранить данные в ViewState как:

 ViewState["dt"] = dt; // Store it in viewstate

Затем вы можете получить к нему доступ из состояния просмотра следующим образом:

DataTable dt = (DataTable)ViewState["dt"]; // Retrieving from ViewState 

protected void btn_Add_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
..............

dt.Rows.Add();

ViewState["dt"] = dt; // storing datatable in ViewState

GridView1.DataSource = dt;
GridView1.DataBind();
}
}
...