简单问题,关于DataGrid控件(VB.NET)。

allan126 2004-05-07 11:22:01
我在DataGrid控件的每行绑定了“编译”按钮,在UpdateCommand事件下修改被选中的记录:

“strID”为获得主键的值(断点调试,已经获得)
Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex)

然后获得每列的值时:
Dim strName As String = CType(e.Item.Cells(1).Controls(0),TextBox).Text

报错了,说:指定的转换无效!

请问我该怎么改,我是菜鸟,请多关照。

...全文
54 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
smx717616 2004-05-07
  • 打赏
  • 举报
回复
另外Controls(0)表示什么意思呢?我不明白,(我是照着书抄的)
Controls(0)表示第几个控件,只有一个的话,就用这个就行了
allan126 2004-05-07
  • 打赏
  • 举报
回复
我会一直等到晚上,各位大哥请多指教啊
allan126 2004-05-07
  • 打赏
  • 举报
回复
e.Item.Cells(1)是表示第二列吧,我是要改此列的值啊,

另外Controls(0)表示什么意思呢?我不明白,(我是照着书抄的)
allan126 2004-05-07
  • 打赏
  • 举报
回复
WZCNet(没有做不到,只有想不到) 你的索引指的是什么啊?

Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex)我的这句在断点调试时,


已经获得此条记录的主键值。
WZCNet 2004-05-07
  • 打赏
  • 举报
回复
Dim strName As String = CType(e.Item.Cells(1).Controls(0),TextBox).Text
你的这个语法是没问题,看一下你的索引对吗?或e.Item.Cells(1)表示第一列,Controls(0),表示第一列中的第一个控件
allan126 2004-05-07
  • 打赏
  • 举报
回复
Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex)
-------------------
Dim strID As integer = MyDataGrid.DataKeys(e.Item.ItemIndex)
###################

这句没错误
humorous2001 2004-05-07
  • 打赏
  • 举报
回复
Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex)
-------------------
Dim strID As integer = MyDataGrid.DataKeys(e.Item.ItemIndex)
allan126 2004-05-07
  • 打赏
  • 举报
回复
不行,语法错误啊
vzxq 2004-05-07
  • 打赏
  • 举报
回复
同意 楼上的。UP
cumtmimi 2004-05-07
  • 打赏
  • 举报
回复
CType((TextBox)e.Item.Cells(1).Controls(0),TextBox).Text
allan126 2004-05-07
  • 打赏
  • 举报
回复
只有60分了。各位大哥不嫌弃,随便拿吧。
allan126 2004-05-07
  • 打赏
  • 举报
回复
CType((TextBox)e.Item[i].Cell[j].FindControl("文本控件名"),TextBox)).Text

出错啊,语法错误
haonanernet 2004-05-07
  • 打赏
  • 举报
回复
to: allan126(风)
CType((TextBox)e.Item.Cells(1).Controls(0),TextBox).Text
和你说说吧
cell代表列的意思:cell(0)代表第一列,cell(1)代表第二列,cell(3)代表第三列
Controls(i)代表第(i+1)个控件
你要用FindControl才行的
CType(((TextBox)e.Item[i].Cell[j].FindControl("文本控件名"),TextBox)).Text
i,j 分别为行

powbcom 2004-05-07
  • 打赏
  • 举报
回复
你要把需要取值的列放到第一位,
<Columns>
这下面一行是cells(0).text的位置 <asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True" HeaderText="ID"></asp:BoundColumn>
这是cells(1).text的位置 <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="用户管理" CancelText="取消" EditText="编辑">
<HeaderStyle Width="20%"></HeaderStyle>
</asp:EditCommandColumn>
<asp:BoundColumn DataField="scal" HeaderText="二级类别名称">
<HeaderStyle Width="25%"></HeaderStyle>
</asp:BoundColumn>
allan126 2004-05-07
  • 打赏
  • 举报
回复
e.Item.Cells(1).Text 我这样取其他列

得到的是空值啊
powbcom 2004-05-07
  • 打赏
  • 举报
回复
我的做法是把主键那一列也放到DATAGRID中去,如:
<Columns>
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True" HeaderText="ID"></asp:BoundColumn>
其他列
</Columns>
这样就可以在代码中调用e.item.cells(0).text得到主键!
不妨试试!
allan126 2004-05-07
  • 打赏
  • 举报
回复
Controls(0),表示第一列中的第一个控件
-------------------------

到底这里的控件指的是什么呀??

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧