有的时候DataGrid取值取不到

来源:互联网 发布:淘宝店怎么进货 编辑:程序博客网 时间:2024/04/28 20:49

有的时候想取不是编辑状态的值,这个时候通常不会使用模板列中放置TextBox通过e.Item.FindControl取值,有的网友问为什么取不到?这要看你前台的列怎么写的了,下面分别写出四种情况和这四种情况下面的取值方式:

<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" AllowPaging="True">
                
<Columns>
                    
<asp:BoundColumn DataField="vName" HeaderText="姓名0"></asp:BoundColumn>
                    
<asp:TemplateColumn HeaderText="姓名1">
                        
<ItemTemplate>
                            姓名
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="姓名2">
                        
<ItemTemplate>
                            
<%#DataBinder.Eval(Container.DataItem,"vName")%>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:TemplateColumn HeaderText="姓名3">
                        
<ItemTemplate>
                            
<asp:Label ID="name" Runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"vName")%>'>
                            
</asp:Label>
                        
</ItemTemplate>
                    
</asp:TemplateColumn>
                    
<asp:ButtonColumn Text="删除" ButtonType="PushButton" CommandName="del"></asp:ButtonColumn>
                
</Columns>
            
</asp:DataGrid>

列出了4种大家可能遇到的列:
(1)绑定列
(2)模板列中直接放静态的字符串
(3)模板列中直接放绑定的字符串
(4)模板列中通过Label放绑定的字符串

下面说明在按下了删除按钮以后的四种取值的方式:
if(e.CommandName=="del")
            
{
                Response.Write(DataGrid1.Columns[
0].HeaderText+":"+e.Item.Cells[0].Text+"<br>");
                Response.Write(DataGrid1.Columns[
1].HeaderText+":"+e.Item.Cells[1].Text.Trim()+"<br>");
                Response.Write(DataGrid1.Columns[
2].HeaderText+":"+((DataBoundLiteralControl)e.Item.Cells[2].Controls[0]).Text.Trim()+"<br>");
                Response.Write(DataGrid1.Columns[
3].HeaderText+":"+((Label)e.Item.Cells[3].FindControl("name")).Text+"<br>");                
            }

(1)第一种用绑定列的方式可以直接通过Cells[i].Text取
(2)第二种方式也直接可以取,但是讨厌的vs.net总是会在前台把列中的内容换行,所以这里还需要对输出的东西进行去除首尾的空格
(3)第三种方式是网友问的最多的,不能直接通过Cells[i].Text取到值,可以通过上面给出的方法来取,同样需要去除首尾的空格
(4)第四种方式也是最简单的方式,当然你可以直接写e.Item.FindControl("name")
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕肌酐偏高210怎么办 孕晚期酮体2是怎么办 怀孕8个月贫血怎么办94 超了月经五天了怎么办 产检尿检有问题怎么办 42天了还有恶露怎么办 恶露42天不干净怎么办 产后42天同房出血怎么办 50多天还有恶露怎么办 55天恶露没干净怎么办 恶露56天没干净怎么办 孕晚期甘胆酸高怎么办 怀孕40周还没入盆怎么办 新买的被子臭味怎么办 被套洗了有异味怎么办 被子上有狐臭味怎么办 尿葡萄糖3个加怎么办 孕妇维c高了怎么办 孕妇吃了维生素c怎么办 尿潜血1十偏高怎么办 培养出b族链球菌怎么办 培养出b群链球菌怎么办 怀孕32周血压高怎么办 白带白细胞2个加怎么办 怀孕尿糖3个加号怎么办 黄疸高怎么办要怎么降 孕40周尿蛋白高怎么办 怀孕了尿蛋白高怎么办 尿蛋白2个加号怎么办 尿蛋白二个加号怎么办 孕妇尿蛋白3是怎么办 尿蛋白高 体检要怎么办 小三阳肝功能正常dna阳性怎么办 维生素c弱阳性该怎么办 体检ph值低了怎么办呀 明矾当泡茶喝了怎么办 怀孕三个月胎儿停止发育怎么办 怀孕ph值是5.0怎么办 孕25周胎盘前置怎么办 6个月孕妇贫血怎么办 24小时尿蛋白175怎么办