我在 C# 中找到了很多解决方案,但是当您处理 FindControls 并尝试从 GridView 中提取值时,C# 无济于事,翻译后的代码也不起作用。
我有这个网格视图:
<asp:GridView ID="WIPListGrid" runat="server" DataSourceID="WIPDataSource"
CssClass="site" AutoGenerateColumns="False"
Width="95%" DataKeyNames="Masterid_Action" onrowdatabound="WIPListGrid_RowDataBound">
<Columns>
<asp:BoundField DataField="Action Due Date" HeaderText="Action Due Date"
SortExpression="Action Due Date" />
</Columns>
</asp:GridView>
我在vb中有这个: Protected Sub WIPListGrid_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles WIPListGrid.RowDataBound
Dim DueDate As Label = DirectCast(e.Row.FindControl("Action Due Date"), Label)
'do what ever you want to do here using the value of your label
MsgBox("Due Date = " & DirectCast(e.Row.FindControl("Action Due Date"), Label))
End Sub
错误消息是 Operator & 没有为类型 'String' 和 'System.Web.UI.WebControls.Label' 定义
这是我~真的~想做的一个补救例子。上面我只想显示 DueDate 中包含的内容以查看它的格式,以便我可以根据其他值对其进行测试。但它不会工作。看来 Action Due Date 的内容不是字符串......那么,我错过了什么?
我试图将值设置为等于字符串但遇到了同样的问题,标签不是字符串...
我如何找出里面有什么来评估它?
17/01/2013 编辑:保持此活动状态,因为我的问题仍未解决。
18/01/2013 编辑:vb.net 代码现在
Protected Sub WIPListGrid_ROWDataBound(sender as Object,
e As System.Web.UI.Webcontrols.GridViewRowEventArgs) Handles WIPListGrid.RowDataBound
Dim DueDate As Label = DirectCast(e.Row.FindControl("Action Due Date"), Label)
'do what ever you want to do here using the value of your label
MsgBox("Due Date = " & DueDate.Text)
End Sub
但是现在我收到一个错误,即 Object 未实例化并且它指向代码中的 msgbox 行。我以为我在将它调暗为标签时实例化了它......
官方错误是:“对象引用未设置为对象的实例。”
故障排除提示说: 1)使用“new”关键字创建对象实例 2)在调用方法之前检查确定对象是否为空
我尝试了“新”选项并得到一个错误,表明该变量已被声明。所以现在我想检查以确定对象是否为空并且无法弄清楚如何。
我尝试过测试: DirectCast(e.Row.FindControl("action due date"), Label) <> "" 但出现错误:重载解析失败,因为无法使用这些参数调用可访问的 '<>'。
如何测试对象是否为空?
该值不应该为空(数据库不允许它为空),但这可能是我问题的症结所在......
有什么帮助吗?