在PostBackUrl中使用JavaScript变量

时间:2012-02-24 14:31:45

标签: javascript asp.net datagrid

我正在尝试在URL中插入一些我用于QueryString的JavaScript函数。我正在使用DataGrid并从插入命令asp:LinkBut​​ton调用PostBackUrl。这是我的网址:

PostBackUrl="ETaskerComments.aspx?etasker=12345&subCat=2"

我从跳线页面获取JavaScript中的QueryStrings,我想用我的JavaScript变量替换subCat中的12345和2。任何帮助都会很棒。

由于

编辑:

让我试着澄清一下......

我有两个QueryStrings

var eTasker = getQueryParam("eTasker");
var subCat = getQueryParam("subCat");

我想得到这样的东西:

PostBackUrl="ETaskerComments.aspx?eTasker=' + eTasker + '&subCat=' + subCat + '"

我虽然喜欢他的东西会起作用但是asp:LinkBut​​ton不喜欢语法。希望这有助于解释。

由于

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题。我必须做的是将代码完全从客户端移出并移动到服务器端,以便与DetailsView(我知道我说DataGrid,应该以相同的方式工作)进行交互,就像我想要的那样。 PostBackUrl似乎不接受变量,因此这不是一个选项。此外,我最终在ASPX页面的头部使用元标记不缓存页面。这是我做的:

将这些元标记放在页面的顶部,以确保您的页面不会缓存。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

其次,我们希望制作一个C#事件处理程序来捕获回发事件,并使页面重新加载到我们想要的位置,在此过程中获取QueryStrings。

<script type="text/c#" runat="server">

protected void Post_Back(object sender, EventArgs e)
{
string subCat = Request.QueryString["subCat"].ToString();
string eTasker = Request.QueryString["eTasker"].ToString();
if (this.IsPostBack)
{
    Response.Redirect("ETaskerComments.aspx?eTasker=" + eTasker + "&subCat=" + subCat + "&Dashboard_ID=" +subCat);

}


}
</script>

现在我们不是使用OnClick将Post_Back附加到Insert,而是使用OnItemInserted参数将它附加到DetailsView:

<asp:DetailsView DefaultMode="Insert" OnItemInserted="Post_Back" runat="server" Width="700px" Height="50px" id="DetailsView1" AutoGenerateRows="False" DataSourceID="SqlDataSource1" DataKeyNames="ID" BackColor="#87AB7B" BorderColor="#1A120F" BorderWidth="1px" ForeColor="Black" CellPadding="2">

就是这样。确保没有更多的调用附加到Insert命令链接,这应运行您的Command并使用新插入的记录刷新DataGrid / DetailsView。

感谢所有观点。快乐的编码! :)