Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex) ------------------- Dim strID As integer = MyDataGrid.DataKeys(e.Item.ItemIndex)
Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex) ------------------- Dim strID As integer = MyDataGrid.DataKeys(e.Item.ItemIndex) ###################这句没错误
Dim strName As String = CType(e.Item.Cells(1).Controls(0),TextBox).Text 你的这个语法是没问题,看一下你的索引对吗?或e.Item.Cells(1)表示第一列,Controls(0),表示第一列中的第一个控件
WZCNet(没有做不到,只有想不到) 你的索引指的是什么啊? Dim strID As String = MyDataGrid.DataKeys(e.Item.ItemIndex)我的这句在断点调试时, 已经获得此条记录的主键值。
-------------------
Dim strID As integer = MyDataGrid.DataKeys(e.Item.ItemIndex)
-------------------
Dim strID As integer = MyDataGrid.DataKeys(e.Item.ItemIndex)
###################这句没错误
你的这个语法是没问题,看一下你的索引对吗?或e.Item.Cells(1)表示第一列,Controls(0),表示第一列中的第一个控件
已经获得此条记录的主键值。
Controls(0)表示第几个控件,只有一个的话,就用这个就行了
-------------------------到底这里的控件指的是什么呀??
<Columns>
<asp:BoundColumn Visible="False" DataField="ID" ReadOnly="True" HeaderText="ID"></asp:BoundColumn>
其他列
</Columns>
这样就可以在代码中调用e.item.cells(0).text得到主键!
不妨试试!
<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>
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 分别为行