gridview中动态生成的模板列HyperLinkField,但通row.Cells[1].Text 获取的值为"" 空字符串。
详细情况是这样的:
GridView1动态添加模板列BoundField,如下
for (int i = 0; i < dt.Columns.Count; i++)
{
BoundField bc = new BoundField();
bc.DataField = dt.Columns[i].ColumnName.ToString();
bc.HeaderText = dt.Columns[i].Caption.ToString();
GridView1.Columns.Add(bc);
}
这样通过以下方式获取到gridview1每行的值:
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox cBox=(CheckBox)row.FindControl("CheckBox1");
if (cBox.Checked)
{
selectedItems.Add(Convert.ToString(row.Cells[1].Text));//
}
但是将GridView1动态添加模板列BoundField换成HyperLinkField后,即:
for (int i = 0; i < dt.Columns.Count; i++)
{
HyperLinkField hlf = new HyperLinkField();
hlf.HeaderText = dt.Columns[i].Caption.ToString();
hlf.DataTextField = dt.Columns[i].ColumnName.ToString();
hlf.SortExpression = dt.Columns[i].Caption.ToString();
GridView1.Columns.Add(hlf);
}
通过遍历gridview1获取值时:
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox cBox=(CheckBox)row.FindControl("CheckBox1");
if (cBox.Checked)//此处可以获取的checkbox的值
{
selectedItems.Add(Convert.ToString(row.Cells[1].Text));//但此处的row.Cells[1].Text
//的值为""
}
请各位大侠帮忙找出问题原因,并提供解决办法!~
------解决方案--------------------把完整的代码贴上来吧,这样说的不是很清楚
BoundField 是绑定列,不是模板列
------解决方案--------------------
//*****你可以将需要取的值存储一个隐藏控件中,如下
<input id="hidValue" type="hidden" value='<%#DataBinder.Eval(Container.DataItem,"F_ID")%>' runat="server">
//****然后获取hidValue控件的值即可
------解决方案--------------------
得到文本:
Response.Write((GridView1.Rows[1].Cells[1].Controls[0] as HyperLink).Text);
得到链接内容:
Response.Write((GridView1.Rows[1].Cells[1].Controls[0] as HyperLink).NavigateUrl);
就楼主的问题,改为
(row.Cells[1].Controls[0] as HyperLink).Text