[英]Repeater Onitemcommand won't fire when binded with DataPager. Why?
我正在使用datapager在轉發器控件中顯示視頻縮略圖。 我最近發現,將中繼器控件的onitem命令與datapager綁定后將不會觸發,但是如果您從綁定中繼器中刪除了datapager,它將起作用。但是我想將datapager用於中繼器,因為我想設置頁面大小,以便在轉發器上顯示特定數量的縮略圖。 我該如何使中繼器的onitem命令與datapager一起使用?如何在asp.net中執行此操作? 請幫助...謝謝。
指示:
<%@ Register Assembly ="DataPagerRepeater" Namespace ="DataPagerRepeater" TagPrefix ="vid" %>
這是DataPager的轉發器控件的HTML源代碼:
<vid:DataPagerRepeater ID="Repeater1" runat="server"
DataSourceID="SqlDataSource1" onitemcommand="Repeater1_ItemCommand">
<HeaderTemplate >
<table border ="0" style ="width :350px;" >
</HeaderTemplate>
<ItemTemplate >
<tr>
<td style ="border :0px; height :100px; width :350px">
<asp:ImageButton ID ="thumb" runat ="server" style=" margin-right :5px" Width ="120px" Height ="75px" ImageAlign = "Left" ImageUrl='<%#Eval("Filename","~/Thumbs/{0}") %>' />
<asp:Label ID="title" runat ="server" Text ='<%#Eval("Title") %>' />
<br />
<asp:Label ID ="artist" runat ="server" Text ='<%#Eval("Artist") %>' />
<br />
<asp:Label ID ="view" runat ="server" Text ='<%#Eval("Views") %> ' />
<asp:Label ID ="Label3" runat ="server" Text =" Views" />
<br />
<%-- <asp:Label ID ="fname" runat ="server" Text ='<%#Eval("VidFname") %>' /> --%>
<asp:TextBox ID ="fname" runat ="server" Text ='<%#Eval("VidFname") %>' />
</td>
</tr>
</ItemTemplate>
<%--
<AlternatingItemTemplate >
<tr>
<td style ="border :0px; height :100px; width :140px">
<asp:ImageButton ID ="thumb2" runat ="server" style=" margin-right :5px" Width ="120px" Height ="75px" ImageAlign ="Left" ImageUrl ='<%#Eval("Filename","~/Thumbs/{0}") %>' />
<asp:Label ID="title2" runat ="server" Text ='<%#Eval("Title") %>' />
<asp:Label ID ="artist2" runat ="server" style="margin-left :20px" Text ='<%#Eval("Artist") %>' />
<asp:Label ID ="view2" runat ="server" style="margin-left :20px" Text ='<%#Eval("Views") %> ' />
<!-- <asp:Label ID ="Label4" runat ="server" Text =" Views" /> -->
</td>
</tr>
</AlternatingItemTemplate>
--%>
<SeparatorTemplate >
<br />
</SeparatorTemplate>
<FooterTemplate >
</table>
</FooterTemplate>
</vid:DataPagerRepeater>
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="Repeater1" PageSize="10">
<Fields>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>
確實在工作! 添加一個Linkbutton來觸發ItemCommand:
<ItemTemplate >
<tr>
<td style ="border :0px; height :100px; width :350px">
<asp:ImageButton ID ="thumb" runat ="server" style=" margin-right :5px" Width ="120px" Height ="75px" ImageAlign = "Left" ImageUrl='<%#Eval("Filename","~/Thumbs/{0}") %>' />
<asp:LinkButton ID="LinkButton1" runat="server"
CommandName="cmd"
CommandArgument='<%# Eval("VidFname") %>' Text="TEST" />
並在代碼中進行測試:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "cmd")
{
//set a break point in the next line
string myString = e.CommandName;
}
}
編輯:圖像按鈕就像命令按鈕,它們會觸發自己的OnCommand而不是轉發器的OnItemCommand,因此它們不會觸發轉發器的OnItemCommand。 而是使用上面帶有圖片的鏈接按鈕:
<asp:LinkButton ID="LinkButton1" runat="server"
CommandName="cmd"
CommandArgument='<%# Eval("VidFname") %>' >
<img src="test.jpg" alt="my cmd" />TEST
</asp:LinkButton>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.