asp.net c#需要重定向到另一个有价值的页面

时间:2016-09-15 12:51:59

标签: c# asp.net gridview

我有一个页面,其中有一个gridview控件,列出了项目信息,并提供了详细查看项目的选项,还有一个页面可以编辑项目并将结果保存为“克隆”。这工作正常,但现在我想在详细视图页面添加一个按钮来克隆记录,而不必返回列表页面并选择克隆项目。

列表页面上的工作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" />

按钮不在表格,网格或其他控件集内。

2 个答案:

答案 0 :(得分:1)

我看到了几个问题。

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

&gt;后缺少括号

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

另外

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

位于普通的html脚本标记内,因此不会被服务器

替换

如果&lt;%#Eval(&#34; QuestionID&#34;)%&gt;返回一个像QUEST3123234这样的字符串,你需要添加引号。如果它是一个数字,则不需要它们。

答案 1 :(得分:0)

想出来。

按钮控件:

<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);
    }

感谢所有人协助装备新手脑细胞。