【问题标题】:Maintain data of DataTable during postback using session使用会话在回发期间维护 DataTable 的数据
【发布时间】:2017-06-15 09:50:39
【问题描述】:

我正在尝试向 gridview 添加数据,例如,如果我们从下拉列表中选择一个值,在文本框中输入一个值,然后单击一个按钮,那么该数据将显示在 gridview 中。

我成功地做到了,但我的问题是当我输入一些其他文本并选择其他值时,先前的记录被隐藏并显示新记录。我想显示我添加的两条记录。

我应该循环执行此操作吗?

Protected Sub pAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles pAdd.Click

      Dim DT= New DataTable()
        Dim DR As DataRow = dtbl.NewRow()
        DT.Columns.Add(New DataColumn("ID"))
        DT.Columns.Add(New DataColumn("Name"))
        DT.Columns.Add(New DataColumn("Type"))

        DR (0) = TEXT_1.Text
        DR (1) = ddl_name.SelectedItem.Text
        DR (2) = ddl_type.SelectedItem.Text
        DT.Rows.Add(drw1)

        gridv.DataSource = DT
       gridv.DataBind()
    End Sub

【问题讨论】:

  • 我不擅长 VB,但既然你标记了 c#,我会尽力提供帮助。 Dim DT= New DataTable() 行是否意味着您每次都声明一个新数据表,并将其设置为具有gridv.DataSource = DT 的唯一数据源?如果是这样,您每次都在替换所有数据。尝试使用 global DataTable,当从下拉列表中选择某些内容时,它会不断添加值。
  • 如何在c#中使用全局数据表做到这一点
  • 出租车你分享你的完整代码?
  • 这是因为回发。您可以将您的价值存储在 ViewState.See in answer
  • @Dot_NETPro 这是我分享的完整代码..

标签: vb.net gridview


【解决方案1】:
 protected void btnAdd_Click(object sender, EventArgs e)
    {

        if (Session["dt"] == null)
        {
            dt = new DataTable();
            dt.Columns.Add("FirstColumn");
            dt.Columns.Add("SecondColumn");
        }
        else
        {
            dt = (DataTable)Session["dt"];
        }

        DataRow row = dt.NewRow();
        row["FirstColumn"] = text_User.Text;
        row["SecondColumn"] = ddl_Use.SelectedIndex;
        dt.Rows.Add(row);
        Session["dt"] = dt;
        gv_grid.DataSource = dt;
        gv_grid.DataBind();
    }

【讨论】:

  • 我在按钮上绑定网格而不是在下拉菜单上
  • 您可以在单击按钮时编写相同的代码。不要紧。只需在按钮单击上编写代码
  • 现在我不想做这个 public List GridData {
  • 现在代码已更新以使用按钮单击。最好使用列表而不是 DataTable。
【解决方案2】:

我已经用完了这个

Private Sub AddToGrid()
    If ViewState("table") IsNot Nothing Then 
        Dim dtable As DataTable = DirectCast(ViewState("table"), DataTable)
        Dim drow As DataRow = Nothing
        If dtable.Rows.Count > 0 Then
            For i As Integer = 1 To dtable.Rows.Count
               drow = dtable.NewRow()
                drow("ID") = TEXT_1.Text
                drow("Name") = ddl_name.SelectedItem.Text
          drow("Type") = ddl_type.SelectedItem.Text
            Next
            dtable.Rows.Add( drow)
            ViewState("table") =dtable
             gridv.DataSource = dtable
             gridv.DataBind()
        End If
    End If
End Sub

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多