Public Class DataGridITemple1 Implements System.Web.UI.ITemplate Dim templatetype As ListItemType Dim columnName As String Sub New(ByVal type As ListItemType, ByVal colName As String) templatetype = type columnName = colName End Sub ' Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn Dim lc As New Literal() Select Case templatetype Case ListItemType.Header lc.Text = "<b>" & columnName & "<b>" container.Controls.Add(lc) Case ListItemType.Item lc.Text = "Item" & columnName container.Controls.Add(lc) Case ListItemType.EditItem Dim tb As New TextBox() tb.Text = "" container.Controls.Add(tb) Case ListItemType.Footer lc.Text = "<I>Footer<I>" container.Controls.Add(lc) End Select End Sub End Class
然后设置属性
在添加到datagrid中
用 TemplateColumn + HyperLink 应该可以了
更复杂的要用 动态模板
id1 id2 id3...
name lwk1 lwk2 lwk3..
adress china japan xianmei
...
name lwk1 lwk2 lwk3..
<a href="aaa">adress</a> china japan xianmei你在组织数据的时候,就把url写进去就可以了。
………………
<asp:datagrid id="DataGrid1" runat="server" DataKeyField="user_ID">
</asp:datagrid>……………………
<html>
<%
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int xuehao=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
Sessin["user_ID"]=xuehao;//或Cookie 。
}
%>
这种方法可以拿到崩定到datagrid的user_ID列鼠标点击行的数据并作为参数传递!!
我也这样用.
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType!=System.Web.UI.WebControls.ListItemType.Footer&&e.Item.ItemType!=System.Web.UI.WebControls.ListItemType.Header)
if (e.Item.Cells[0].Text=="address")
for (int i=1;i<e.Item.Cells.Count;i++)
e.Item.Cells[i].Text=@"<a href='test.aspx'>"+e.Item.Cells[i].Text+"</a>";
}
谢谢 crodling(蓝风) ,可是有个问题,如果我想让这个链接弹出个对话框
如下,不行,会出错,应怎么写呢?分不够再开贴,谢谢!
this.DataGrid1.Items[i].Cells[m].Text=@"<a href=javascript:var win = window.open('DataGridTotals.aspx');>"+this.DataGrid1.Items[i].Cells[m].Text+"</a>";
还有一个也请帮一下忙:
我是有左右两个框架,按左框架(a.aspx)的链接值传一参数到右框架(b.aspx),然后再在b.aspx上按一按钮弹出对框(window.open('c.aspx')),处理完数据后,在c.aspx上有一个完成的按钮,我想当用户按这个按钮时关闭c.aspx,同时刷新框架的框架b.aspx我试了很多方法都不能刷新?
Dim columnName As String Sub New(ByVal type As ListItemType, ByVal colName As String) templatetype = type
columnName = colName End Sub
'
Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn Dim lc As New Literal()
Select Case templatetype
Case ListItemType.Header
lc.Text = "<b>" & columnName & "<b>"
container.Controls.Add(lc)
Case ListItemType.Item
lc.Text = "Item" & columnName
container.Controls.Add(lc)
Case ListItemType.EditItem
Dim tb As New TextBox()
tb.Text = ""
container.Controls.Add(tb)
Case ListItemType.Footer
lc.Text = "<I>Footer<I>"
container.Controls.Add(lc)
End Select
End Sub
End Class
e.Item.Cells[i].Text=@"<a href='DataGridTotals.aspx','_blank'>"+e.Item.Cells[i].Text+"</a>";