((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0])).Text; 转换出错、获取不到值的解析

         <asp:TemplateField HeaderText="序号">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox2" runat="server" Text=‘<%# Bind("序号") %>‘ Width="64"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:Label ID="Label2" runat="server" Text=‘<%# Bind("序号") %>‘ Width="68"></asp:Label>
                                    </ItemTemplate>
 </asp:TemplateField>
string s0 = GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0].GetType().ToString();
//{Name = "LiteralControl" FullName = "System.Web.UI.LiteralControl"}

string s1 = GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[1].GetType().ToString();
//{Name = "TextBox" FullName = "System.Web.UI.WebControls.TextBox"}

string s2 = GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[2].GetType().ToString();
//{Name = "LiteralControl" FullName = "System.Web.UI.LiteralControl"}

事实上 html中设计是textbox, 但是编译器在内部给添加了两个LiteralControl类。返回值如下:

 string s4 = ((LiteralControl)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0])).Text;
//返回值是\r\n
  string s5 = ((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].FindControl("TextBox2"))).Text;
//返回值是“我的序号”
  string s6 = ((LiteralControl)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[2])).Text;
//返回值是\r\n

也就是说其实网上bbs常见的提问里的解决方法用的

string s9 = ((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0])).Text;
//常见的强制类型转换出错且获取不到控件的原因是序号不对,而这个在MSDN里是没有说明的

string s10 = ((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[1])).Text;
//应该用.Controls[1]

很多文章在讲解如何获取多控件的时候建议使用

string s4= ((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[1])).Text;
//当存在多个控件 的时候可以尝试用gettype方法看一下哪个是你需要的textbox控件。
string s5 = ((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].FindControl("TextBox2"))).Text;
//这个方法与上述的Controls[1]其实是等效的。

原文地址:https://www.cnblogs.com/lyichemistry/p/8503943.html

时间: 2024-10-10 05:26:48

((TextBox)(GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0])).Text; 转换出错、获取不到值的解析的相关文章

asp.Net2.0中TextBox设置只读后后台获取不到值的解决方法

http://www.cnblogs.com/yxyht/archive/2013/03/02/2939883.html ASP.NET中TextBox控件设置ReadOnly="true"H或Enabled=false后台取不到值 当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为“空”  . 方法一:不设置ReadOnly属性,通过onfocus=this.blur()来模拟,如下: <asp:Text

asp.net-gridview

protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; Bindgrid(); }//编辑按键下的取消代码.将EditIndex=-1,然后在绑定数据库. protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { str

GridView编辑删除操作

第一种:使用DataSource数据源中自带的编辑删除方法,这样的不经常使用,在这里就不加说明了. 另外一种:使用GridView的三种事件:GridView1_RowEditing(编辑).GridView1_RowUpdating(更新).GridView1_RowCancelingEdit(取消编辑).GridView1属性中将DataKeyNames的值设置为主键名,否则找不到索引,这个非常重要哦. 该方法有2种操作,一种是不正确绑定列转换为模板列,第二种是转换为模板列. 这里先说不转换

Asp.net中GridView使用详解(引)

GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到GridView某一行时改变该行的背景色方法一鼠标移到GridView某一行时改变该行的背景色方法二GridView实现删除时弹出确认对话框GridView实现自动编号GridView实现自定义时间货币等字符串格式GridView实现用“...”代替超长字符串GridView一般换行与强制换行GridV

Gridview进入编辑状态,新手来看。

可能是学习能力有限吧,我从昨晚到今天,累积起来起码五六个小时,才终于弄懂了这个Gridview的编辑.毕竟找来的代码都是没有注释和说明的. 我想记录下来,也希望后来的新丁能少走弯路. <form id="form1" runat="server"> <div class="div1"> <asp:GridView ID="GridView1" Width="100%" Auto

使用command对象操作数据库

1.Command对象查询数据库 protected void Button1_Click(object sender, EventArgs e) { //读取web.config节点配置 string strcon = ConfigurationManager.ConnectionStrings["testjm"].ConnectionString; //实例化sqlConnection对象 SqlConnection con = new SqlConnection(strcon);

GridView总结二:GridView自带编辑删除更新

GridView自带编辑删除更新逻辑很简单:操作完,重新绑定.总结总结,防止忘记... 效果图: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridView_bianjidelete.aspx.cs" Inherits="gridView_bianjidelete" %> <!DOCTYPE html> <html

Asp.net中GridView使用详解(引)【转】

Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList结合 GridView和CheckBox结合 鼠标移到GridView某一行时改变该行的背景色方法一 鼠标移到GridView某一行时改变该行的背景色方法二 GridView实现删除时弹出确认对话框 GridView实现自动编号 GridView实现自定义时间货币等字符串格式 GridView实现用

C# GridView Edit &amp; Delete, 点击Delete的时候弹出确认框

1. 使用GridView自带属性ShowEditButton和ShowDeleteButton,均设为True  <Columns> ... <asp:CommandField ShowEditButton="True" ShowDeleteButton="True"></asp:CommandField> </Columns> 则在GridView指定列的位置会显示Edit和Delete的LinkButton 2.