2012-02-24 48 views
0

我想插入一些JavaScript函数,我在我的QueryString中使用了一个URL。我正在关闭DataGrid并关闭插入命令asp:LinkBut​​ton来调用PostBackUrl。这是我的网址:在PostBackUrl中使用JavaScript变量

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

我从我的跳投页让我在JavaScript中查询字符串,我想用我的JavaScript变量替换SUBCAT 12345和2。任何帮助都会很棒。

感谢

编辑:

让我试图澄清更多...

我有两个查询字符串

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

我想要得到的东西是这样的:

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

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

谢谢

+0

我想你还没有得到答案,因为这个问题有点难以理解。你可以发布一些示例代码?这将有助于澄清。您始终可以使用JavaScript Replace()方法来替换文本,但我不确定这会回答您的问题。 – swannee 2012-02-24 15:05:10

+0

我试过了替换方法,它似乎不想在执行后回发。这在@ $$是一种痛苦。 :) – lazoDev 2012-02-24 18:50:41

回答

0

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

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

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

第二,我们goign做一个C#事件处理程序捕获回发事件,使我们所想要的页面重载,让我们的查询字符串的进程。

<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> 

现在,而不是Post_Back附加到带有一个onclick插入,我们将它与O​​nItemInserted参数附加到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"> 

这就是它。确保没有更多的调用附加到插入命令链接,这应该运行你的命令并刷新你的DataGrid/DetailsView与新插入的记录。

感谢所有的意见。快乐编码! :)

+0

为什么我会得到一个-1时,它的作品? – lazoDev 2012-02-27 14:11:24