有一ID列,想给它加上超连接即"<a href='a.aspx?r="+id+"'>查看详细</a>"
刚网上找了一下,都是要用到模板列的,那样太麻烦,
有很多个页面,用模板列的话如果字段增加的话就要一个一个去修改。
我的页面是弄成多个页面的gridview调用同一个方法得到datatable的,
前台的gridview不做任何操作,就一空白gridview
在查询数据的时候直接修改datatable,但这样显示到gridview后是直接将html符号显示出来 了。
弄了好久得不到结果,所以现在想退一步,在.aspx.cs里面修改列内容增加超连接,但没找到合适的方法,都是用模板列。可不可以不修改.aspx页面的gridview(不用事件),直接在后台通过gridview.rows[n][m]=...修改gridview内容实现超连接列
刚网上找了一下,都是要用到模板列的,那样太麻烦,
有很多个页面,用模板列的话如果字段增加的话就要一个一个去修改。
我的页面是弄成多个页面的gridview调用同一个方法得到datatable的,
前台的gridview不做任何操作,就一空白gridview
在查询数据的时候直接修改datatable,但这样显示到gridview后是直接将html符号显示出来 了。
弄了好久得不到结果,所以现在想退一步,在.aspx.cs里面修改列内容增加超连接,但没找到合适的方法,都是用模板列。可不可以不修改.aspx页面的gridview(不用事件),直接在后台通过gridview.rows[n][m]=...修改gridview内容实现超连接列
解决方案 »
- 求鼠标点击页面随便地方显示出绝对定位的div代码
- asp.net 2.0 GridView 如何弹出新窗体
- 关于5D6D.com的一个问题
- 求一sql语句,急
- >>>>>>>>>>>>请教,.NET Framework 1.1是不是还分SP版本,比如 .NET Framework 1.1
- 有关DropdownList控件的问题
- 做一个模糊查询,sql语句中要插入参数,用'%'+ @title + '%'? 好像不行?
- 大家写的更新函数,返回值什么类型?int?bool?还是干脆void?
- 各位帮帮我
- aspx文件中怎样处理url中的变量值?
- Session保存登录信息,重新打开页面后怎么获取之前Session值?
- itextsharp第几页共几页怎么做?
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
row.Cells[0].Text = "<a target='_blank' href=xx.aspx' </a>";
}
}
如果每列都加
则加循环
for (int i = 0; i <= row.Cells.Count - 1; i++)
row.Cells[0].Text = "<a target='_blank' href='xx.aspx'>" + row.Cells[0].Text + "</a>";
然后
GridView1.DataSource = datatable;
GridView1.DataBind();
就这样
datatable中包括一些html连接,要正常显示到gridview,但这样直接绑定没模板列的话做的html标记都直接显示出来了。
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
"<a href='a.aspx?r="<%#Eval("ID")%>"'>操作</a>
<ItemTemplate> </asp:TemplateField>
</Columns>
public HyperLinkField CreateHyperLinkField(StyleSoft.Common4.Models.MethodDataKey pProperty) {
MyHelper.Assert(pProperty != null, new ArgumentNullException("参数pProperty不能为null"));
HyperLinkField _clm = new HyperLinkField();
_clm.DataTextField = MyHelper.ToString(pProperty.DataField);
_clm.DataNavigateUrlFormatString = MyHelper.ToString(pProperty.Url)
+ "?"
+ _clm.DataTextField
+ "={0}";
_clm.DataNavigateUrlFields = new string[] { _clm.DataTextField };
_clm.Target = "_blank";
_clm.HeaderText = MyHelper.ToString(pProperty.Caption);
_clm.SortExpression = MyHelper.ToString(pProperty.SortExpression);
string _SumExpression = MyHelper.ToString(pProperty.SumExpression);
if(_SumExpression != "" && this.ShowFooter) {
_clm.FooterText = _SumExpression;
}
return _clm;
}//end function
是不用模板不用事件哦,你的方法用了事件。
因为是多个页面用同一个方法得到的datatable,所以如果用事件的话我一样要一个页面一个页面去修改。
我希望的是aspx和aspx.cs上的代码越少越好,而且数据库进行一些修改不会受影响。用Sandy945的方法解决了,我自己之前纠结于gv.rows[i]["aa"]的写法,没考虑到cells所以浪费了不少时间。
下面这代码写到类里,每个页面绑定的时候只要调用一下就可以了,这样我很多内容就可以统一在类里修改,而不需要一个页面一个页面去修改了。这只是我的想法,不知道还有没有更好的方法。 public void resetData(GridView gv)
{
int n = gv.Rows.Count;
if (n < 1)
{
return;
}
int m = gv.Rows[0].Cells.Count;
for (int i = 0; i < n; i++)
{
gv.Rows[i].Cells[m - 1].Text = "<a href='result.aspx?r=" + gv.Rows[i].Cells[m - 1].Text + "'>查看详细</a>";
}
}