2016-09-15 70 views
0

我有一个页面有一个gridview控件,列出项目信息,并有选项来详细查看项目,也打开页面编辑项目并保存结果作为“克隆”。这工作正常,但现在我想添加一个按钮到详细视图页面克隆记录,而不必返回到列表页面并选择克隆项目。asp.net c#需要重定向到另一个页面值为

工作列表页上的GridView控件:

<asp:GridView ID="GridView1" runat="server" Caption="Submitted  Questions" AllowSorting="True" 
CaptionAlign="Left" EmptyDataText="You have not submitted any Questions." PageSize="5" 
AutoGenerateColumns="false" AlternatingRowStyle-BackColor="#cccccc"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:Label ID="QuestionID" runat="server" Text='<%# Eval("QuestionID") %>' /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:BoundField DataField="KeyObjective" HeaderText="Key Objective" ItemStyle-Width="150" /> 
    <asp:BoundField DataField="SubmitDate" HeaderText="Submitted Date" ItemStyle-Width="50" /> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="Details" runat="server" Text="View Details" PostBackUrl='<%#"~/Submit/Detail.aspx?Id=" + Eval("QuestionID") %>'></asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="Clone" runat="server" Text="Create Clone" PostBackUrl='<%# "~/Submit/Clone.aspx?Id=" + Eval("QuestionID") %>'></asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
</asp:GridView> 

在按钮控制当前的尝试:

下降的JavaScript下方并移动到后面的代码:

按钮:

<asp:Button ID="CloneButton" runat="server" Text="Clone This Question" OnClick="CloneButton_Click" /> 

后面的代码:

protected void CloneButton_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("~/Submit/Clone.aspx?Id=" + txt_QuestionID); 
    } 

现在看起来应用程序正试图打开克隆页面,但解释为Id传递的值时遇到问题?

克隆页面出现此处的错误:收到的错误是“输入字符串格式不正确”。

using (Conn) 
     { 
      SqlCommand command = new SqlCommand("sp_CloneSElect", Conn); 
      command.CommandType = CommandType.StoredProcedure; 
      command.Parameters.Add(new SqlParameter("@QuestionID", SqlDbType.BigInt)); 
      command.Parameters["@QuestionID"].Value = Convert.ToInt32(Request["Id"]); 
      Conn.Open(); 
      SqlDataReader reader = command.ExecuteReader(); 

忽略此处不再使用的内容(已保存以供参考已提交的备注)。

使用Javascript:

<script type="text/javascript"> 
    function redirect(QuestionID) { location.href = '~/Submit/Clone.aspx?Id=' + QuestionID; } 
</script> 

按钮:

<asp:Button ID="CloneButton" runat="server" OnClientClick='redirect(<%#Eval("QuestionID") %>; return false' Text="Clone Question" /> 

按钮不是表,网格,或其它控制组的内部。

+0

这是如何具体不符合你的期望?它在哪里失败?重定向与记录的标识符肯定是我会做的。然后在'Clone.aspx'页面上使用查询字符串中的标识符来获取记录并“克隆”它。 – David

+0

如果将按钮放入网格中,它将起作用。 –

+0

@ j.v。在我想放置按钮的详细信息页面上没有网格。来自列表页面的gridview控件只显示一个需要复制到另一个页面和控件类型的工作控件(希望有意义)。 –

回答

1

我看到了一些问题。

OnClientClick='redirect(<%#Eval("QuestionID") %>; return false' 

有一个括号后失踪>

OnClientClick='redirect(<%#Eval("QuestionID") %>); return false' 

而且

location.href = '~/Submit/Clone.aspx?Id=' + QuestionID; 

是一个普通的HTML脚本标签中左右〜不会受到服务器替换

如果< %#Eval(“QuestionID”)%>返回像QUEST3123234这样的字符串,您需要添加引号mar KS。如果它是一个数字,那么它们是不需要的。

+0

我试着改变'localhost:53269'的本地环境,但仍然得到相同的结果,当前的详细记录被重新加载。 –

+0

你创建克隆记录的代码是什么? – derloopkat

+0

我改变了按钮,使用response.redirect后面的代码(请参阅原始问题中的编辑,现在应用程序尝试打开克隆页面,但与过去的值有问题(我认为)。 –

0

想通了。

Button控件:

<asp:Button ID="CloneButton" runat="server" Text="Clone This Question" OnClick="CloneButton_Click" /> 

代码背后:

protected void CloneButton_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("~/Submit/Clone.aspx?Id=" + txt_QuestionID.Text); 
    } 

感谢所有协助到罐子新手脑细胞。

相关问题