asp.net – 将数据绑定到网格视图
|
我有以下代码:
Imports System.Data
Partial Class Students_AddWishes Inherits System.Web.UI.Page
Public dt As New DataTable
Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
dt.Columns.Add("ID",System.Type.GetType("System.Int32"))
dt.Columns.Add("univirsity",System.Type.GetType("System.Int32"))
dt.Columns.Add("major",System.Type.GetType("System.Int32"))
End Sub
Protected Sub btnAdd_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles btnAdd.Click
Dim row1 As DataRow = dt.NewRow()
row1("ID") = dt.Rows.Count + 1
row1("univirsity") = ddlUnivs.SelectedValue
row1("major") = ddlMajors.SelectedValue
dt.Rows.Add(row1)
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
End Class
问题是它只显示一行或记录.如何让它显示许多记录? 解决方法
您的页面加载事件,您没有检查它是否是回发:
If Not IsPostBack Then
'process code if it is not a post back
End If
每次单击btnAdd按钮时,您的页面都会回发到服务器. 我只是注意到你可能不了解物体的使用寿命. 你在代码中完成了这个: Public dt As New DataTable 问题在于你已经定义了这是一个类变量,一旦页面加载了你就有了一个类型为dt的实例,它可能有一些与之关联的列.但只要您记录按钮等事件,就会销毁该引用并创建新的dt. 您将不得不使用会话变量或数据库来存储dt的状态. 这是C#中的一个例子: protected void Page_Load(object sender,EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID",System.Type.GetType("System.Int32"));
dt.Columns.Add("univirsity",System.Type.GetType("System.Int32"));
dt.Columns.Add("major",System.Type.GetType("System.Int32"));
Session["MyDataTable"] = dt;
}
}
protected void btnAdd_Click(object sender,EventArgs e)
{
DataTable t = (DataTable)Session["MyDataTable"];
DataRow row1 = t.NewRow();
row1["ID"] = t.Rows.Count + 1;
row1["univirsity"] = 3;
row1["major"] = 31;
t.Rows.Add(row1);
Session["MyDataTable"] = t;
GridView1.DataSource = t;
GridView1.DataBind();
}
和vb.net中的代码相同: Protected Sub Page_Load(ByVal sender As Object,ByVal e As EventArgs)
If Not Page.IsPostBack Then
Dim dt As New DataTable()
dt.Columns.Add("ID",System.Type.[GetType]("System.Int32"))
dt.Columns.Add("univirsity",System.Type.[GetType]("System.Int32"))
dt.Columns.Add("major",System.Type.[GetType]("System.Int32"))
Session("MyDataTable") = dt
End If
End Sub
Protected Sub btnAdd_Click(ByVal sender As Object,ByVal e As EventArgs)
Dim t As DataTable = DirectCast(Session("MyDataTable"),DataTable)
Dim row1 As DataRow = t.NewRow()
row1("ID") = t.Rows.Count + 1
row1("univirsity") = 3
row1("major") = 31
t.Rows.Add(row1)
Session("MyDataTable") = t
GridView1.DataSource = t
GridView1.DataBind()
End Sub
所以现在代码所做的是实例化一个新的数据表对象,只要我们在页面上(第一篇文章后面)并添加列.一旦定义了数据表,我们就把它放在某个会话状态.当您单击添加按钮时,您不能在之前的代码中继续使用dt,因为您的先前代码中的dt范围已丢失.我们通过分配在临时数据表之前存储的会话数据表来完成此操作.我们添加行并重置会话,下次添加行时它将显示第二行,然后是第三行,依此类推…… 我推荐一本很好的asp.net书籍,比如C#2008中的Beginning ASP.net 3.5.有很多关于同一主题的vb.net书籍. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 使用JSON.Net序列化EF4.1实体
- ASP.NET MVC – Ajaxified RenderAction
- asp.net – GridView EmptyDataTemplate
- asp.net-mvc – 在mvc下拉列表中自动恢复
- asp.net – 如何判断Application_Error中是否有Request / R
- asp.net – 我可以使用msbuild打包带有发布配置文件的网站并
- asp.net-mvc – ASP.NET MVC快速启动 – 一站式教程?
- asp.net-mvc – 如何在回发后保持dropdownlist选中的值
- asp.net-mvc – 绑定排除Asp.net MVC不适用于LINQ实体
- asp.net-mvc – 学习Asp.net MVC 2
- asp.net – HttpWebRequestError:服务器提交协议
- asp.net – 不明确的引用问题(Microsoft.AspNet.
- asp.net – Mono vhost配置错误:地址已经在使用
- ASP.NET Eval时间格式化
- asp.net – 我应该为10,000个并发用户实现哪个.n
- asp.net – NLogConfigurationException – 从’
- asp.net – NHibernate线程安全与会话
- asp.net-mvc – ASP.NET MVC:围绕控制器分组类
- asp.net-mvc-3 – 名称’ViewBag’在当前上下文中
- asp.net – 在非生产环境中复制与负载相关的崩溃
