通过代码绑定GridView控件

ASP.NET中,GridView控件是用于显示和操作数据的强大工具。通常情况下,可以通过Visual Studio设计器来配置GridView的数据源,这种方式简单直观。然而,有时候需要通过代码来绑定数据,尤其是在数据源是在页面的代码后台动态生成的情况下。本文将介绍如何在不使用数据源模型的情况下,通过代码来绑定GridView控件,并处理相关的事件。

绑定GridView控件

当通过代码来绑定GridView时,需要自己处理事件,这与在设计时配置GridView不同。需要处理的事件包括:行编辑(RowEditing)、行删除(RowDeleting)、取消编辑(RowCancelingEdit)和更新行(RowUpdating)。

假设正在通过代码绑定GridView,需要在页面加载事件处理程序中绑定GridView:

If Not IsPostBack Then GridView1.DataSource = EVALAdapter.GetData() GridView1.DataBind() End If

这段代码在页面首次加载时,设置GridView的数据源并绑定数据。

进入编辑模式

要将GridView的行设置为编辑模式,需要在RowEditing事件中执行以下操作:

GridView2.EditIndex = e.NewEditIndex GridView2.DataSource = EvalGroups.GetData() GridView2.DataBind()

这段代码将GridView的编辑索引设置为新的编辑索引,并重新绑定数据。

取消编辑

取消编辑(RowCancelingEdit)与编辑(RowEditing)相似,但有一个小变化:

GridView1.EditIndex = -1 GridView1.DataSource = EVALAdapter.GetData() GridView1.DataBind()

这段代码将编辑索引设置为-1,表示没有行处于编辑状态,并重新绑定数据。

更新行

更新行(RowUpdating)的代码如下:

Dim cmd As New dsEvalTableAdapters.tblEvalTableAdapter Dim FirstCellText As String = GridView1.Rows(e.RowIndex).Cells(0).Text Dim chkCheck As CheckBox = GridView1.Rows(e.RowIndex).FindControl("CheckBox1") Dim txtCtlID As TextBox = GridView1.Rows(e.RowIndex).FindControl("TextBox2") cmd.MGEvalUpdateEvalPeriod(FirstCellText, chkCheck.Checked, txtCtlID.Text) GridView1.EditIndex = -1 GridView1.DataSource = EVALAdapter.GetData() GridView1.DataBind()

这段代码首先创建一个命令对象,并获取当前行的第一列文本、复选框的状态和文本框的文本。然后,它调用存储过程更新数据,并重置编辑索引,重新绑定数据。

注意事项

使用FindControl是因为在编辑模式下动态创建的TextBox控件没有直接引用。'TextBox1'的名称是自动生成的,类似于在Web表单中首次添加TextBox控件时自动赋予的默认ID值。可以通过查看编辑模式下的aspx页面源代码来查看这一点。

重要的是,尝试使用FindControl找到的控件字段必须是模板字段,而不是BoundField。如果是BoundField,则需要通过GridViewRow.Cells集合来访问,就像获取"FirstCellText"值那样。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485