2011-07-13 195 views
0

我把一個超鏈接的數據列表裏面..問題與超鏈接

<ItemTemplate> 
       <asp:HyperLink ID="HyperLink1" runat="server">'<%# Eval("ThreadTitle") %>'</asp:HyperLink> 

       <br /> 
       <br /> 
      </ItemTemplate> 

我希望它能夠將其按下,使DataList控件的事件將被觸發並傳遞我到另一頁:

protected void DataList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Server.Transfer("AnswerQuestion.aspx?x=" + DataList1.DataKeyField + "&question=" + DataList1.SelectedValue + "&time=" + DateTime.Now); 
} 

不幸的是,該鏈接似乎被禁用,我不能按它來觸發DataList的Selected事件..

我怎樣才能讓超鏈接是否有效?

回答

1

如果您想觸發選定的事件,請使用LinkBut​​ton而不是超鏈接。

<asp:DataList ID="DataList1" runat="server" 
     onselectedindexchanged="DataList1_SelectedIndexChanged"> 
    <ItemTemplate> 
    <asp:LinkButton ID="sjdj" runat="server" CommandName="Select"> 
     <%# Container.DataItem %></asp:LinkButton> 
    </ItemTemplate> 
    </asp:DataList> 

在後面的代碼有爲什麼你的arent使用超鏈接爲超鏈接

protected void DataList1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      Server.Transfer("~/jjtestjj.aspx?" + DataList1.DataKeyField); 
     } 
+0

但鏈接按鈕廢墟所有presentation..I寧願說它沒有看起來像一個按鈕 –

0

您可以使用OnItemDataBound(或等價物)事件來設置NavigationURLText

此代碼的工作與asp:Repeater

protected void Row_DataItem(object row, RepeaterItemEventArgs args) 
{ 
    if (args.Item.ItemType == ListItemType.AlternatingItem || args.Item.ItemType == ListItemType.Item) 
    { 
     var item = (DataItemPOCO)args.Item.DataItem; 
     var link = (HyperLink)args.Item.FindControl("HyperLink1"); 
     link.Text = item.LinkText; 
     link.NavigateUrl = item.URL; 
    } 
} 
+0

導航URL ...大聲笑..不那麼快..如果我可以簡單地設置導航網址..我不會問這個問題... –

+0

爲什麼不通過? DataList有一個OnItemDataBound事件。還有其他事情嗎? –

+0

好的,我會放手:)我看到你選擇了一個答案 –