我正在尝试在URL中插入一些我用于QueryString的JavaScript函数。我正在使用DataGrid并从插入命令asp:LinkButton调用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:LinkButton不喜欢语法。希望这有助于解释。
由于
答案 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。
感谢所有观点。快乐的编码! :)