gridview编辑状态下把textbox换成dropdownlist了,但controls[0]还是textbox类型,请问如何更改?

问题描述

当进入编辑状态时,我到原来的textbox移除了,换成了dropdownlist,但到RowUpdating的时候,controls[0].gettype(),还是textbox类型。请问如何可以把controls[0]的类型变成dropdownlist呢?protectedvoidgv_RowDataBound(objectsender,GridViewRowEventArgse){if((e.Row.RowState==(DataControlRowState.Edit|DataControlRowState.Alternate))||(e.Row.RowState==DataControlRowState.Edit)){TextBoxcurText;DropDownListsexddl=newDropDownList;sexddl.Items.Add("男");sexddl.Items.Add("女");sexddl.Items.Add("");curText=(TextBox)e.Row.Cells[2].Controls[0];sexddl.SelectedValue=curText.Text;e.Row.Cells[2].Controls.RemoveAt(0);e.Row.Cells[2].Controls.Add(sexddl);}}

解决方案

解决方案二:
遍历下Control里面有几个控件,0还是TextBox,说不定1就是DropDownList了呢,也可以考虑FindControl找下
解决方案三:
引用1楼starfd的回复:

遍历下Control里面有几个控件,0还是TextBox,说不定1就是DropDownList了呢,也可以考虑FindControl找下

试了,只有0,没有1gv.Rows[e.RowIndex].Cells[2].Controls[0].GetType().ToString();system.web.UI.webcontrols.textboxgv.Rows[e.RowIndex].Cells[2].Controls[1].GetType().ToString();会出错,“指定的参数已超出有效值的范围。”
解决方案四:
不要瞎Remove,这不是winform,这是web,它们的机制不同。wb页面对象在一瞬间就销毁了,下次访问时就重建了。而你写的Remove只是“上一次”创建页面之后(在处理事件时)执行过一次而已,你怎么能让下一次页面创建时还有DropDownList呢。如果没有学习过asp.net组件开发知识,就先不要编写这方面的代码。GridView本来就将普通显示和编辑的模板可以分开设置的。只要你按照初学者编写GridView正规方式编写就行了。
解决方案五:
直接转换为模板列,将编辑模板设置为DropDownList

时间: 2024-09-17 21:29:37

gridview编辑状态下把textbox换成dropdownlist了,但controls[0]还是textbox类型,请问如何更改?的相关文章

如何获取GridView编辑状态下单元格里的值?

还在使用这样的代码吗? var txtName = grid1.Rows[e.RowIndex].Cells[0].FindControl("txtName") as TextBox;if (txtName != null){ // 读取值 //} 其实这些工作(在单元格中查找控件,并尝试获取其中的值)已经被封装了 .现在,只要调用 ExtractValuesFromCell 方法即可. 而该方法也被很多种列类型所支持: DataControlField, BoundField, Au

在编辑状态时,如何取得GRIDVIEW控件某一列模板里DropDownList的值

问题描述 用GRIDVIEW控件进行数据编辑,在编辑时,有一列编辑模板里用了一个DropDownList控件,现需要当编辑某一行时,取得DropDownList里选择的值,并将该值赋给程序中的一个变量,该如何做?(注:请用VB.NET写代码,俺对C不太熟) 解决方案 解决方案二:DropDownListddl=((DropDownList)GRIDVIEW.Row(选择行的索引).cell(模版列所在列).findControl("控件ID"))Id=ddl.Select.valueT

ASP.NET 2.0下含有DropDownList的GridView编辑、删除的完整例子

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" PageSize="10" Width="542px" AllowPaging="True" AllowSorting="True" DataKeyNames="DB31_1,DB31_2" OnRo

gridview在编辑状态时如何按要求输入

问题描述 gridview在编辑状态时,要修改记录的某些字段,比如说姓名字段(只能是汉字或字母和下划线),学号(必须是6为整数),成绩(0到120带两位小数),性别(男女可选择的输入)等等这些必须符合要求的输入方式如何实现呢??如果要用到模板,如何使用?请高手们给个详细点的答案!!!!拱手谢了! 解决方案 解决方案二:似乎不行,推荐用PAGEREAPTER.解决方案三:行绑定结束后,给文本控件添加onblur事件,然后自己分别写js函数进行正则判断.解决方案四:引用2楼changke18的回复:

asp.net中GridView编辑,更新,合计用法示例_实用技巧

本文实例讲述了asp.net中GridView编辑,更新,合计用法.分享给大家供大家参考,具体如下: 前台代码: <asp:GridView ID="tabgv" runat="server" DataKeyNames="ysId" ShowFooter="True" OnRowDataBound="GridView1_RowDataBound" OnRowCreated="GridView

笔记本换成XP系统后IExplore.exe应用程序错误

笔记本换成XP系统后,单击我的电脑或者别的时候,有时会提示,下面的错误提示: --------------------------- IExplore.exe - 应用程序错误 --------------------------- "0x00a1bdb3" 指令引用的 "0x00000001" 内存.该内存不能为 "read". 要终止程序,请单击"确定". 要调试程序,请单击"取消". --------

在DBGrid中可选中行而又可进入编辑状态

如何在DBGrid中选中行,而又让它可以进入编辑状态? 也许你会问我这有什么用?呵呵,做数据库应用的兄弟们会深有感触,当用DBGrid显示的字段过多时,用户不得不拉动最下面的滚动条,去看最右边的东西,如果没有设置DBGrid->Options[dgRowSelect],那么,拉到最右边之后,很有可能看串行的:如果设置了DBGrid->Options[dgRowSelect],则在拉到最右边之后,不会看串行,但是鼠标点击其它行(不是当前选中行)时,DBGrid的视图一下子就会回到显示最左边的那一

如何将Word里的文字换成图片

  1.打开Word文档,首先将需要替换的图片复制,接着点击工具栏的"开始"→"编辑"→"替换". 2.输入查找的内容(这里以超级下载站)为例,然后在"替换为"里输入"^c",接着点击全部替换. 3.这个时候文档里的"超级下载站"就会全部换成图片啦.

Win7系统如何把默认安装路径C盘换成D盘缓解C压力

  Win7系统如何把默认安装路径C盘换成D盘缓解C压力          1.按"Win+R"调出"运行"对话框,输入"regedit"命令后按回车,打开注册表编辑器. 2.在打开的注册表中,依次展开以下注册项HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion; 3.在右侧窗格中找到ProgramFilesDir项,双击打开该值进行编辑,将默认数值修改为你要修改的路径; 4.