点击后,原来那也就会跳转到一个写着Object的页面里。就这里比较怪!!<asp:HyperLinkColumn datanavigateurlfield="pId" DataNavigateUrlFormatString="javascript:window.showModelessDialog('designertoc.htm',window,'help=no;status=no;resizable=yes')" DataTextField="pItemName" HeaderText="项目名称"/>这样也不行!
不用<asp:HyperLinkColumn>, 用<asp:LinkButton>试试看。
在绑定的ItemCommand里面:
private void MyGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName.Equals("select"))
{
Response.Write("<script language=javascript>window.open('xxx.aspx','','');</script>");
}
}
我原来看到有人像这样写过,但现在想不起来了!!
<asp:LinkButton ...>
<%# DataBinder.Eval(Container.DataItem, "pItemName")%>
</asp:LinkButton>
微软这一改为.net好像自由就不太多了,属性又那么少,以后做出来的东西说不定都是一个样,DataGrid!!
<asp:DataGrid ID="MyGrid" Runat=server ...>
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>xxxx</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton Runat=server ID="lblText" CommandName="Go">
<%# DataBinder.Eval(Container.DataItem, "pItemName")%>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>在cs里面:
在MyGrid的ItemCommand事件中
private void MyGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
if(e.CommandName.Equals("Go")){
DataRow row = ((DataTable)ViewState["aTable"]).Rows[e.Item.ItemIndex];
//aTable是在Page_Load里面绑定给MyGrid的数据源
//在Page_Load里面将之放到ViewState["aTable"]里面
int id = (int)row["pId"];
Response.Write("<script language=javascript>window.open('xxx.aspx?id="+id+"&x=?&y=?','','');</script>");
}
}明白了吗?
这样应该没问题了吧。