asp.net的GridView模版使用LinkButton问题
我用VS2008的GridView控件取数据库的值做新闻显示,前台代码如下(部分):<asp:GridViewID="GridView_xw"runat="server"...
我用VS2008的GridView控件取数据库的值做新闻显示,
前台代码如下(部分):
<asp:GridView ID="GridView_xw" runat="server" CellPadding="2" GridLines="None" ShowHeader="False"
Width="318px" AutoGenerateColumns="False" Font-Size="11pt" OnRowCommand="GridView_xw_RowCommand"
DataSourceID="SqlDataSource_xw" PageSize="8" OnRowDataBound="GridView_xw_RowDataBound"
CellSpacing="2">
<RowStyle Font-Size="11pt" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
·
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"
CommandArgument='<%# DataBinder.Eval(Container.DataItem,"id") %>'
CommandName="xw" Text='<%# DataBinder.Eval(Container.DataItem,"bt") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
相应的后台代码如下(部分):
protected void GridView_xw_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "xw")
{
string id = e.CommandArgument.ToString();
Response.Redirect("xw.aspx?id=" + id);
Response.End();
}
}
运行似乎正常,点击新闻也能显示到相应的新闻,但如果用鼠标点住相应的新闻,点右键选“在新窗口中打开”是则显示“缺少对象”出错,显示在地址栏的为:
javascript:__doPostBack('GridView_xw$ctl03$LinkButton1','')
查看源代码,其URL就是上面的串!
谁能帮我解决啊!急!
回答很好,谢谢!
我还想问一句:是否所有的LinkButton在任何地方都是这样的问题?是否不应该用LinkButton? 展开
前台代码如下(部分):
<asp:GridView ID="GridView_xw" runat="server" CellPadding="2" GridLines="None" ShowHeader="False"
Width="318px" AutoGenerateColumns="False" Font-Size="11pt" OnRowCommand="GridView_xw_RowCommand"
DataSourceID="SqlDataSource_xw" PageSize="8" OnRowDataBound="GridView_xw_RowDataBound"
CellSpacing="2">
<RowStyle Font-Size="11pt" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
·
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"
CommandArgument='<%# DataBinder.Eval(Container.DataItem,"id") %>'
CommandName="xw" Text='<%# DataBinder.Eval(Container.DataItem,"bt") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
相应的后台代码如下(部分):
protected void GridView_xw_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "xw")
{
string id = e.CommandArgument.ToString();
Response.Redirect("xw.aspx?id=" + id);
Response.End();
}
}
运行似乎正常,点击新闻也能显示到相应的新闻,但如果用鼠标点住相应的新闻,点右键选“在新窗口中打开”是则显示“缺少对象”出错,显示在地址栏的为:
javascript:__doPostBack('GridView_xw$ctl03$LinkButton1','')
查看源代码,其URL就是上面的串!
谁能帮我解决啊!急!
回答很好,谢谢!
我还想问一句:是否所有的LinkButton在任何地方都是这样的问题?是否不应该用LinkButton? 展开
1个回答
展开全部
用JS转向的链接,点右键选“在新窗口中打开”是会出现你所的问题的,好象改不了,因为你是在新窗口运行javascript:__doPostBack('GridView_xw$ctl03$LinkButton1','')
这个JS代码,而新窗口当然是没有定义__doPostBack这个方法的,所以报错,“缺少对象”。
一定要改的话,只能把ItemTemplate改成链接的形式,而不是LinkButton
语法细节自己改下吧
<ItemTemplate>
<a href='xx.aspx?id=<%# DataBinder.Eval(Container.DataItem,"id") %>'><%# DataBinder.Eval(Container.DataItem,"bt") %>'</a>
</ItemTemplate>
这个JS代码,而新窗口当然是没有定义__doPostBack这个方法的,所以报错,“缺少对象”。
一定要改的话,只能把ItemTemplate改成链接的形式,而不是LinkButton
语法细节自己改下吧
<ItemTemplate>
<a href='xx.aspx?id=<%# DataBinder.Eval(Container.DataItem,"id") %>'><%# DataBinder.Eval(Container.DataItem,"bt") %>'</a>
</ItemTemplate>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询