C# asp.net:如何让 GridView 控件显示表数据时,某列是 textbox 类型 和 dropdownlist 类型 ( 积分: 100 )

  • 主题发起人 主题发起人 赛特
  • 开始时间 开始时间

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
C# asp.net:(Visual Studio 2005)
我在用 GridView 控件显示表数据时,由于该表有改动需求,所以要将有改动需求的两个字段分别做成 textbox 类型 和 dropdownlist 类型 ,请问怎样用代码实现?
比如,
datatable mytable //已经成功获得表数据;
GridView1.datasource = mytable;
GridView1.DataBind();
而 mytable 中 ‘字段A’ 需要用 textbox 类型;‘字段B’ 需要用 dropdownlist 类型,请问如何在 ‘代码’ 中实现,因为具体是哪些字段需要用什么类型的控件要根据具体情况而定,不是绝对的?是不是要用到 RowCreated 之类的事件?
(希望说得具体些,初学,万分感谢!)
 
把这一列设成是模板列,然后在模板里加textbox或者dropdownlist。
我说的方法在设计时和在代码中应该都可以实现的。
本人也是初学,在代码中怎么实现我也不知道。
 
自己已经解决了。但又遇到新问题了,不知道怎样访问模板列了,我是这样访问的:
textbox tb = (textbox)gridview1.rows[0].findcontrol("textbox");
label1.text = tb.text;
报错说:未将对象引用设置到对象的实例。
我觉得可能 tb 根本就没有找到 gridview 里的 textbox 对象,请问应该如何访问模板列?
我需要用 for 循环 读取 gridview 里的每行的模板列的内容
for (i=0;i<gridview1.rows.count;i++)
{
textbox tb = (textbox)gridview1.rows[0].findcontrol(&quot;textbox&quot;);
但这样不行
}
模板列是 load 里面代码动态加上去的,而且 load 里的代码都是写在 !ispostback 里的,当按 button 后,连模板列都不见了。是不是这个原因是得我访问不到模板列呢?如果是该如何处理呢?能不能让按下 button 后,本页面不重执行 load ?
 
改成(textbox)gridview1.rows[0].findcontrol(&quot;textbox1&quot;);
 
to ddzhouqian:
创建模板列的时候,取的 ID 就是 &quot;textbox&quot;,怎么能用 findcontrol(&quot;textbox1&quot;) ??
 
findcontrol(控件的名称),你是不是填错了控件的名称,仔细检查一下。
 
后退
顶部