希望非常简单。我的数据网格中有一个列,其中包含用于通知的电子邮件。它们用';'分隔。我想在每个'{1}}之后放一个';'这样网格就不会从页面上移开太远。我能够获得一个函数,允许我在创建之前看到每一行,但是当我试图检索值来编辑它时,它返回null。我将在星期五擦除它时尝试检索该功能,但想知道是否有人有关于如何执行此操作的任何链接或示例。
我有:
"<br>"
我想:
-------------------------------------------------------------------------------
| Column1 | Column2 | Column3 | Notify |
-------------------------------------------------------------------------------
| NULL | NULL | NULL | email1@emailserver.com;email2@emailserver.com |
-------------------------------------------------------------------------------
我知道我正在使用ItemCreated函数并尝试从DataGridItemEventArgs中检索值。现在正在处理这个功能。
好的,所以我回到这个测试:
---------------------------------------------------------
| Column1 | Column2 | Column3 | Notify |
---------------------------------------------------------
| NULL | NULL | NULL | email1@emailserver.com; |
| | | | email2@emailserver.com |
---------------------------------------------------------
当我第一次点击断点时,.Text属性显示它是Notification,这正是它应该作为标题字段。在下一个中断和后续中断时,.Text属性为“”。现在,这个网格在Page_Load上是数据绑定的,但这会影响到这个吗?该值是否必须在DataGridItemEventArgs中才能创建该记录?我知道当我完成页面的ViewSource时它会在那里显示信息,但我不知道是否可以在绘制表格后设置它,但我对此表示怀疑。任何帮助将非常感激。谢谢。这是Page_Load和BindData函数,只是你需要它们。
Private Sub ItemCreated(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles dgTasks.ItemCreated
If e.Item.Cells.Count > 1 Then
Dim int As Integer = 0 'I put a breakpoint here to evalute the information
End If
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
'Do Nothing
Else
BindData("")
End If
End Sub
Private Sub BindData(ByVal strSort As String)
Dim tsDS As CustomDataSet = New CustomDataSet
For Each dr As DataRow In tsDS.GetData("").Tables(0).Rows
If dr.Item(2).ToString().StartsWith("Vacancy") Then
dr.Delete()
End If
Next
Dim dv As DataView = tsDS.GetData("").Tables(0).DefaultView
If strSort.Length > 0 Then
dv.Sort = strSort
End If
dgTasks.DataSource = dv
dgTasks.DataBind()
End Sub
答案 0 :(得分:1)
我相信你想要ItemDataBound
事件。 ItemCreated
是DataGrid
的那一行创建的时间。控件就在那里,但就是这样。在ItemDataBound
事件中,控件绑定到其数据,并且数据可供访问。如果您的逻辑取决于绑定数据,请使用ItemDataBound
事件,该事件在ItemCreated
事件后触发。
通过为事件分配事件处理程序名称,将其连接到.aspx代码中,例如
OnItemDataBound = "MyDataGrid_ItemDataBound"
在该事件中,您首先要检查您正在查看的项目类型。
然后,您找到了细胞和对照。最后,将Text属性设置为已更改的文本。
以下是一个例子:
protected void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
e.Item.Cells[3].Text == <assign your altered text here>
}
}