只有BoundColumn列和自动生成列,才可以通过TableCell.Text属性读取显示的文本。HyperLinkColumn、ButtonColumn、EditCommandColumn都需要将目标控件转换成相应的控件。
比如:
假设DataGrid的第一列声明如下
<asp:HyperLinkColumn DataTextField="au_id" HeaderText="au_id" DataNavigateUrlField="au_id" DataNavigateUrlFormatString="Edit.aspx?id={0}"></asp:HyperLinkColumn>
读取的时候可以用:
//Items[0]表示第一行,Cells[0]表示第一列,Controls[0]表示Cell中的第一个控件(也只有这个控件可以用)
HyperLink link = (HyperLink)DataGrid1.Items[0].Cells[0].Controls[0]);
Response.Write(link.Text);
至于模板列(TemplateColumn),当然也可以通过DataGrid1.Items[i].Cells[j].Controls[n]来获取,然后转换成原来的控件类型再操作,但是还有个更好的办法,就是用FindControl来查找控件。
FindControl是System.Web.UI.Control的方法,可以根据子控件ID来查找子控件
比如:
假设DataGrid的某一列声明如下
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox Runat="server" ID="txtID" Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
读取方法:
TextBox txt = (TextBox)DataGrid1.Items[1].FindControl("txtID");
Response.Write(txt.Text);
外面读
CheckBox pch=(CheckBox)this.DataGrid1.Items[j].Cells[0].FindControl("pch");
比如:
假设DataGrid的第一列声明如下
<asp:HyperLinkColumn DataTextField="au_id" HeaderText="au_id" DataNavigateUrlField="au_id" DataNavigateUrlFormatString="Edit.aspx?id={0}"></asp:HyperLinkColumn>
读取的时候可以用:
//Items[0]表示第一行,Cells[0]表示第一列,Controls[0]表示Cell中的第一个控件(也只有这个控件可以用)
HyperLink link = (HyperLink)DataGrid1.Items[0].Cells[0].Controls[0]);
Response.Write(link.Text);
至于模板列(TemplateColumn),当然也可以通过DataGrid1.Items[i].Cells[j].Controls[n]来获取,然后转换成原来的控件类型再操作,但是还有个更好的办法,就是用FindControl来查找控件。
FindControl是System.Web.UI.Control的方法,可以根据子控件ID来查找子控件
比如:
假设DataGrid的某一列声明如下
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox Runat="server" ID="txtID" Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
读取方法:
TextBox txt = (TextBox)DataGrid1.Items[1].FindControl("txtID");
Response.Write(txt.Text);
外面读
CheckBox pch=(CheckBox)this.DataGrid1.Items[j].Cells[0].FindControl("pch");
解决方案 »
- 程序中的事务处理只是针对数据库吗?
- asp.net项目中(vss2008平台),设置启动URL以及添加新的“引用DLL文件的路径”的页面在哪里?
- xml,SimpleContent 列问题
- 回发之后TreeView的鼠标悬浮样式没有了
- DataList中如何获取EditItemTemplate模板中已修改的数据
- 问题
- 使用ctype转换dbgrid中的编辑框为textbox,用的时vs自带的例子,为什么会出错?
- 是不是我的java脚本库坏了?
- 请教各位专家,学ASP.NET应从何入门?
- 最近才开始用C#编写网站程序,几个问题需要高手解答
- 我在.aspx网页中用的Datalist和DataGrid怎么在浏览器中打开时怎么都看不到?
- 很菜的问题,如何获得当前选中节点的ID?谢谢(急……)
int j=1;
//可以用循环 ,具体使用请参考 DataGridItem 的使用
System.Web.UI.WebControls.DataGridItem item =this.DataGrid1.Items[i]
item.Cells[j]="";
Dim t As TextBox = New TextBox()
Dim i As Integer
For i = 0 To DataGrid1.Items.Count - 1
t = DataGrid1.Items(i).FindControl("textbox1")
Response.Write(t.Text)
Next
End Sub
[email protected]