65.9K
CodeProject 正在变化。 阅读更多。
Home

代码数据绑定 GridView & FindControl

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

13647

本文将展示如何在代码后置中处理 GridView 控件,且不使用 DataSource 模型。如果

本文将展示如何在代码后置中处理 GridView 控件,且不使用 DataSource 模型。

如果你打算通过代码绑定 GridView,需要记住几点。当你这样做时,必须自己处理事件,这与在设计时配置 GridView 不同。

具体来说,你必须处理:RowEditingRowDeletingRowCancelingEditRowUpdating(GridView 的事件)。

1. 假设你在代码中绑定 GridView,你需要在 Page Load 事件处理程序中绑定 GridView。

 

 If Not IsPostBack
GridView1.DataSource = EVALAdapter.GetData 'my dataset
GridView1.DataBind()
End If

2. 为了将你的 GridView 行置于“编辑”模式,你必须在 RowEditing 事件中执行以下操作。

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

3. RowCancelingEditRowEditing 相同,只有一个小小的变化。

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

4. 我的 RowUpdating 如下所示:

Dim cmd As New dsEvalTableAdapters.tblEvalTableAdapter

Dim FirstCellText as String = GridView1.Rows(e.RowIndex).Cells(0).Text
Dim chkCheck As CheckBox
chkCheck = GridView1.Rows(e.RowIndex).FindControl("CheckBox1")
Dim txtCtlID As TextBox
txtCtlID = GridView1.Rows(e.RowIndex).FindControl("TextBox2")

cmd.MGEvalUpdateEvalPeriod(FirstCellText , chkCheck.Checked, txtCtlID.Text) 'this runs the stored procedure I added to my dataset
GridView1.EditIndex = -1
GridView1.DataSource = EVALAdapter.GetData
GridView1.DataBind()
  

需要记住几点。FindControl 是必要的,因为在进入编辑模式时动态创建的 TextBox 控件没有直接引用。名称“TextBox1”是自动生成的(就像你第一次将 TextBox 控件添加到 Web 表单并为其分配默认 ID 值一样)。如果你在进入编辑模式后查看 aspx 页面的源代码,可以看到这一点。

重要:你尝试使用 FindControl 查找的控件字段,在本例中,必须是模板字段,而不能仅仅是 BoundField(如果它们是 BoundField,则需要通过 GridViewRow.Cells 集合访问它们,就像我们对“FirstCellText”值所做的那样)。


在本文中,我们展示了如何使用代码后置手动绑定 GridView 控件,且不使用 DataSource 模型。

请注意,使用 DataSource 模型更容易,因为你只需要使用 Visual Studio 设计器配置 GridView 数据源。此外,使用 DataSource 模型可以自动启用分页、编辑、删除、更新,而使用代码后置方法(如本文所示)则需要大量工作。

有时你别无选择,只能使用代码后置模型,例如,如果你想将 GridView 绑定到数组元素列表或在页面代码后置中创建的 DataTable。

最后,尽可能使用 DataSource 模型,因为它简单且最大限度地减少了代码量,从而最大限度地减少错误和工作量。

链接:

数据访问教程

GridView 类

© . All rights reserved.