可以,在ItemCreated中重写该列
if(e.Item.ItemIndex==-1) return;
//如果是手动创建,则知道字段A所在索引位置i的值,自动创建,通过检索数据源中列名"A"知道i的值
//字段B 的值j 的方法同上
if(e.Item[i].Text =="1")
{
HyperLinkColumn h=new HyperLinkColumn();
//... 设置h.相关属性
h.Text=e.Item[j].Text;
//h.ID="linkButton_"+h.Text 设置名称,最好在DataGrid中有一个关键字段,可以不重复。
h.Click += new EventHandler(LinkButton_Click);
e.Item[j].Controls.Add(h);
}
if(e.Item.ItemIndex==-1) return;
//如果是手动创建,则知道字段A所在索引位置i的值,自动创建,通过检索数据源中列名"A"知道i的值
//字段B 的值j 的方法同上
if(e.Item[i].Text =="1")
{
HyperLinkColumn h=new HyperLinkColumn();
//... 设置h.相关属性
h.Text=e.Item[j].Text;
//h.ID="linkButton_"+h.Text 设置名称,最好在DataGrid中有一个关键字段,可以不重复。
h.Click += new EventHandler(LinkButton_Click);
e.Item[j].Controls.Add(h);
}
<asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem,"列1") %>' visible='<%# IsVisible(DataBinder.Eval(Container.DataItem,"列1")) %>' ID="Label3" NAME="Label3"/>
<asp:HyperLink Runat="server" Visible='<%# !IsVisible(DataBinder.Eval(Container.DataItem,"列1")) %>' />
</itemtemplate>再写一函数
private bool IsVisible(string str1)
{
return (str1==1);
}
<asp:BoundColumn HeaderText="区局" DataField="gcsx" ReadOnly />
<asp:TemplateColumn>
<HeaderTemplate>工程</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"GCMC") %>' Visible='<%# DataBinder.Eval(Container.DataItem,"Text") %>'/>
<asp:HyperLink Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"GCMC") %>' Visible='<%# DataBinder.Eval(Container.DataItem,"HyperLink") %>'
NavigateUrl='js.aspx?GCCODE=<%# DataBinder.Eval(Container.DataItem,"GCCODE") %>&Year=<%=StrYear%>' />
</ItemTemplate>
</asp:TemplateColumn>我发现当显示HyperLink时,NavigateUrl无法把URL的参数绑定进去:在实际显示的DataGrid中,URL是:
http://localhost/Gis/js/js.aspx?GCCODE=<%# DataBinder.Eval(Container.DataItem,"GCCODE") %>&Year=<%=StrYear%>。也就是说<%=StrYear%>和<%#…… %>部分在服务器端没有进行解析替换,这是怎么回事啊?如何解决?
ItemDataBound()事件里if (e.Item.ItemType == ListItemType.Item && e.Item.ItemType == ListItemType.AlternatingItem)
{
((HyperLink)e.Item.Cells[index of hlk].FindContrl("name of hlk here")).NavigateUrl = "js.aspx?GCCODE="+e.Item.Cells[0].Text+"&Year="+StrYear;
}
if (e.Item.ItemType == ListItemType.Item && e.Item.ItemType == ListItemType.AlternatingItem)
改为
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//... 设置j.相关属性
e.Item[j].Text="<a href='js.aspx?GCCODE="+e.Item[i].Text+"&Year="+StrYear+"'>"+e.Item[j].Text+"</a>";
}