![](/img/trans.png)
[英]postback error when using linkbutton PostBackUrl with query string
[英]LinkButton Redirection with Query String
我正在嘗試制作一些簡單的代碼,以使用發送ID和命令名的中繼器onitemcommand
在數據庫中創建數字。
在數據庫中增加int
的代碼可以正常工作,但是當我嘗試將重定向添加到“文章頁面”時,您可以在其中閱讀整篇文章。
因此,我的問題是如何使用LinkButton
重定向並在重定向中創建查詢字符串,如下所示,在linkbutton
內的<a>
(HTML5)標記中// //如果添加<a>
(HTML5)標記則不會更新數據庫中的int
// //如果刪除<a>
(HTML5)標記,它將更新數據庫int
但不會使用查詢字符串進行重定向。
<asp:Repeater ID="Repeater_Frontpage" OnItemCommand="Repeater_Frontpage_ItemCommand" DataSourceID="SqlDataSource1" runat="server">
<ItemTemplate>
<asp:LinkButton CommandName="Visit" CommandArgument='<%# Eval("news_id") %>' runat="server"><a href="Article.aspx?category_id=<%# Eval("fk_categories_id") %>&news_id=<%# Eval("news_id") %>">Read More</a></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
protected void Repeater_Frontpage_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Visit")
{
SqlConnection conn = new SqlConnection(Helpers.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
int userId = int.Parse(e.CommandArgument.ToString());
cmd.CommandText = "UPDATE News SET news_visits = news_visits + 1 WHERE news_id =" + userId;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
您可以將ItemIndex
設置為CommandArgument
CommandArgument='<%# Container.ItemIndex %>'
然后您可以從Repeater DataSource獲取行
protected void repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Visit")
{
var rowIndex = (int)e.CommandArgument;
//Here I am assuming that your data source is a DataTable
var row = ((DataTable)repeater.DataSource).Rows[0];
var newsID = row.Field<int>("newsID");
var categoriesID = row.Field<int>("fk_categories_id");
Response.Redirect($"Article.aspx?category_id={categoriesID}& amp;news_id={categoriesID}");
Response.Write($"Do something with {e.CommandArgument}");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.