我有一个包含一定数量列的gridview,而我想从中获取值的ID列当前设置为visible = false。另一列是TemplateField列(LinkButton),当用户点击按钮时,它将从ID列中获取值并将值传递给我的一个javascript函数。
web窗体:
<script language=javascript>
function openContent(contentID)
{
window.open('myContentPage.aspx?contentID=' + contentID , 'View Content','left=300,top=300,toolbar=no,scrollbars=yes,width=1000,height=500');
return false;
}
</script>
<asp:GridView ID="gvCourse" runat="server" AutoGenerateColumns="False" OnRowCommand="gvCourse_RowCommand"
OnRowDataBound="gvCourse_RowDataBound" BorderStyle="None" GridLines="None">
<RowStyle BorderStyle="None" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkContent" runat="server"
CommandName="View" CommandArgument='<%#Eval("contentID") %>' Text='<%#Eval("contentName") %>'>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="contentID" HeaderText="contentID" ReadOnly="True"
SortExpression="contentID" Visible="False" />
<asp:BoundField DataField="ContentName" HeaderText="ContentName"
ReadOnly="True" SortExpression="ContentName" Visible="False" />
</Columns>
<AlternatingRowStyle BorderStyle="None" />
代码背后:
protected void gvCourse_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "View")
{
intID = Convert.ToInt32(e.CommandArgument);
}
}
protected void gvCourse_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((LinkButton)e.Row.FindControl("lnkContent")).Attributes.Add("onclick", "return openContent('" + intID + "');");
}
}
是的,我没有尝试根据用户选择的项目获取intID,因此当用户点击链接按钮时,它将使用javascript打开一个弹出窗口,ID将用作查询字符串。
答案 0 :(得分:1)
您可以使用OnClientClick的LinkButton属性,并使用正确的参数构建对JavaScript方法的正确调用。
的内容<asp:LinkButton ID="lnkContent" runat="server" ...
OnClientClick='openContent(<%#Eval("contentID") %>)' ... />
答案 1 :(得分:1)
感谢帮助人员,但似乎我发现了其中一个问题的解决方案。
只需要替换它:
((LinkButton)e.Row.FindControl("lnkContent")).Attributes.Add("onclick", "return openContent('" + intID + "');");
这个(需要指定DataKeyNames):
((LinkButton)e.Row.FindControl("lnkContent")).Attributes.Add("onclick", "return openContent('" + ((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString() + "');");