DetailsView事件的问题

本文关键字:问题 事件 DetailsView | 更新日期: 2023-09-27 18:02:16

我有一个带有按钮链接的列表,当一个按钮列表被点击时,这个事件被触发:

    protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
    DetailsView dv = (DetailsView)sender;
    LinkButton linkbtn = (LinkButton)dv.FindControl("LinkButton3");
    string threadID = e.CommandArgument.ToString();
    string threadName = linkbtn.Text;
      Server.Transfer("~/AnswerQuestion.aspx?x=" + threadID+"&question=" + threadName + "&time=" + DateTime.Now);
}

链接按钮的标记。

   <ItemTemplate >
            <asp:LinkButton ID="LinkButton3" runat="server" Text=<%# Eval("ThreadTitle") %> CommandName="Select" CommandArgument=<%# Eval("ThreadsID") %>>LinkButton</asp:LinkButton>
         </ItemTemplate>

问题是我也允许分页…所以Detailsview1_ItemCommand被触发时,某一页被点击(例如,如果我们是在第1页和第2页点击,然后事件被触发).

我想通过包装服务器来防止这种情况。Transfer语句,并创建一个条件,说明是否点击了buttonLink而不是传呼机…(我不能强制转换sender..因为我得到了DetailsView)

DetailsView事件的问题

你已经为LinkButton指定了一个CommandName,那么为什么你不使用它呢?

if(e.CommandName == "Select")
{
   //Do something
} 

顺便说一下,如果这个链接按钮不执行任何服务器操作,除了转移到另一个页面上,也许最好在这里使用简单的锚标记。